You need to sign in to do that
Don't have an account?

カスタムボタンのJavaScriptを使用しての、外部サイトへのxmlhttprequest
カスタムボタンのJavaScriptを使用して、外部サイトへのxmlhttprequestを行いたいのですが、うまくいきません。
下記サイトのサンプルコードで、HTML内に記述されたJavaScript部分と全く同じ機能
をカスタムボタンのみで実現しようとしています。
(ボタンを押すと、参照先テキストの中身がポップアップで表示される)
http://www.ajaxtower.jp/ini/http/index6.html
実際に書いたコードは以下です。
--------------------------------------------------------------------------------------------------------
{!REQUIRESCRIPT('/soap/ajax/20.0/connection.js')}
{!REQUIRESCRIPT('/soap/ajax/20.0/apex.js')}
if (window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}else{
if (window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}else{
xmlHttp = null;
}
xmlHttp.onreadystatechange = checkStatus;
xmlHttp.open("GET", "http://www.ajaxtower.jp/sample/plan.txt", true);
xmlHttp.send(null);
function checkStatus(){
if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
alert(xmlHttp.responseText);
}
}
--------------------------------------------------------------------------------------------------------
IE8、crome、firefoxで試しましたが、どれもうまくいきませんでした。
どうすれば参照先のテキストをポップアップ表示されるかご教授いただけますでしょうか。
※設定画面で、外部サイトURLは登録済みです。
http://help.salesforce.com/HTViewHelpDoc?id=configuring_remoteproxy.htm&language=ja
単純に外部サイト(Salesforce.com以外のドメイン)へXMLHttpRequestを送ろうとすると、クロスドメイン制約に引っかかってしまうので、呼び出す事はできないと思います。
ご指摘のコードだとAjax Toolitを読み込んでいますが、XMLHttpRequestを直接叩いてしまってますね。
Ajax Toolitの中にある sforce.connection.remoteFunction メソッドを利用する事で、実際の通信は
ブラウザのJavascript <-> Salesforceのサーバ <-> 外部Webサイト
となる様にSalesforceがProxyの働きをします。
このためブラウザのクロスドメイン制約を回避出来ます。
外部サイトURLへの登録は、Ajaxで利用する場合このProxyの通過を許可するURLを設定している事になります。
英語ですが以下のサイトを参考にしてみて下さい。
AJAX ProxyでWebサービスマッシュアップ
http://blogjp.sforce.com/2007/08/ajax_proxyweb_55af.html
Ajax Tookit Developer's Guide - Advanced Topics
http://www.salesforce.com/us/developer/docs/ajax/Content/sforce_api_ajax_queryresultiterator.htm
Ajax Proxy
http://wiki.developerforce.com/page/Ajax_Proxy