現在、JQuery で AJAX を使用して JSON を API サーバーに送信しています。ただし、JSON.stringify() を使用すると JSON 文字列をエスケープしているサーバーに問題があるようですが、別のサーバーではまったく同じコードを使用すると問題なく動作します。
これは、stringify を使用している Javascript オブジェクトの例です。
{"jsonrpc":"2.0","method":"get_contacts","params":["4345ert343t34t34t4e564",
{"campaigns":["AI5D"]}],"id":1}
ここの例から作業しています https://github.com/GetResponse/DevZone/blob/master/API/examples/javascript_synopsis.html
あるサーバーでは、二重引用符がバックスラッシュでエスケープされており、API サーバーが解析エラーで応答する原因となっています。これは明らかに正しくないためです。別のサーバーでは、エスケープは存在せず、API は正常に動作します。両方のサーバーでまったく同じコードが使用されています。
何が原因なのか誰にもわかりませんか?エンコードの問題でしょうか?注意すべきことの 1 つは、あるサーバーで WYSIWYG エディターを介して JavaScript を入力する必要があることですが、JavaScript はページの読み込み時に正しく表示されるように見えます。
私はこれを理解しようと長い時間を費やしてきたので、誰かが素晴らしいアイデアを持っていれば.
編集:
私が使用しているJSコードは次のとおりです。
var api_key = '4345ert343t34t34t4e564';
var api_url = 'http://api2.getresponse.com';
var CAMPAIGN_ID = 'AI5D';
var data = JSON.stringify({
"jsonrpc" : "2.0",
"method" : "get_contacts",
"params" : [
api_key,
{
"campaigns" : ["AI5D"]
}
],
"id" : 1
});
console.log(data);
jQuery.ajax({
url : api_url,
data : data,
type : "POST",
contentType : "application/json",
dataType : "json",
crossDomain : true,
async : true,
success : function(response)
{
alert(JSON.stringify(response));
console.log(JSON.stringify(response));
}