プログラマ38の日記

主にプログラムメモです。

【Salesforce】カスタムボタンで、WebServiceの戻り値をMsxml2.XMLHTTPでsendする際にはまったこと

カスタムボタンで、Msxml2.XMLHTTPを使って別のシステムと接続する際にはまったことのメモになります。

 

やりたかったことは、

1.カスタムボタンで、文字列を戻すカスタムWebServiceをコール。

2.戻り値で取得した文字列を、Msxml2.XMLHTTPのsendで別システムに送信。

3.送信した結果を画面表示(alert)。

です。

 

どこではまったかというと2のsendです。

なぜだかうまくいかなくて、取得した戻り値をtoString()して文字列にしたらsendできました。

//カスタムWebService
global class SampleWS {
    webservice static String sample1(String param){
        return 'returnvalue:' + param;
    }
}
//カスタムボタンの処理
{!requireScript('/soap/ajax/39.0/connection.js')}
{!requireScript('/soap/ajax/39.0/apex.js')}

var ret = sforce.apex.execute('SampleWS' , 'sample1' , { param : 'パラメータ' } );

var xmlhttp = new ActiveXObject ("Msxml2.XMLHTTP");
xmlhttp.open('POST', 'http://xxxx.xxxx/xxxx/xxxx', false);
xmlhttp.send(ret); ← これだとエラー
xmlhttp.send(ret.toString()); ← これだとうまくいく

理由は明確にはわかりませんでしたがtoString()で動いたのでOKとしました。