1

jquerygetJSONメソッドを使用してjson-rpcリクエストをリモートサーバーに送信しようとしています。これが私のコードです:

json_string=JSON.stringify(obj);
var jqxhr = $.getJSON("https://91.199.226.106/ssljson.php?jsoncallback=?", json_string, function(data){
    alert("aaaaaa");
});
jqxhr.error(function() { alert("error"); })

これが私のjson-rpc文字列の例です:

{"jsonrpc":"2.0","method":"merchant_check","params":[{"hostID":150999,"orderID":116,"amount":"150","currency":"051","mid":15001038,"tid":15531038,"mtpass":"12345","trxnDetails":""}],"id":116}

そして、これが私が得るエラーです:

{"jsonrpc":"2.0","id":null,"error":{"code":-32600,"message":"Invalid JSON-RPC 2.0 request error (-32600)"}}

何が問題なのかわかりません。私は何か間違ったことをしていますか?たぶん私はjqueryではなくphpでリクエストを送信する必要がありますか?では、どうすればいいですか?

4

2 に答える 2

1

名前getJSONが示すように、GETJSON-RPCを使用する場合は、次のようにPOSTを使用する必要があります。

var json_string = JSON.stringify(obj);
$.post('https://91.199.226.106/ssljson.php', json_string, function(response) {
   // process response
}, 'json');

ただし、これは、CORSを使用しない限り、ページが同じサーバー上にある場合にのみ機能します。

于 2013-07-29T07:38:06.100 に答える
0

その特定のエラーメッセージは、メッセージエンベロープがJSON-RPC 2.0仕様に従って無効であるか、JSON自体に解析エラーがあることを通知することになっています。

残念ながら、実際には、多くのサービスがさまざまな状況でこのエラーを返します。(例:認証トークンの欠落など)

サンプルメッセージに関する特定の問題はありますか?

WebサービスはGETリクエストを受け入れますか?POST(すなわち:これは代わりにすべきですか?)

Webサービスは実際に?jsoncallback=?ビットを必要としますか?これは通常、JSON-RPCではなくJSONPリクエストの場合です。サービスは実際のJSON-RPCエラーステータスを返しているので、そのGETパラメーターが必要な場合は本当に驚きます。また、(Webサービスの構成によっては)エンベロープの一部として解釈される可能性があります。無効なJSON-RPCリクエスト!

merchant_check1つ以上のトランザクションの配列を唯一のパラメーターとして使用しますか?そうでない場合は、の構文が間違っていparamsます。になりたいサービスもあれparamsば、ArrayになりたいサービスもありObjectます。どちらが当てはまるかを判断するには、SMD/ドキュメントを参照してください。

サービスは、リクエストのtext/jsonとして(または他の何か)を必要とする場合があります。mime-type

推奨されるアプローチ

これらの問題を回避するには、Dojoツールキットで提供されているような専用のJSON-RPCライブラリを使用することから始め、Webサービスによって公開されているSMDがある場合はそれを使用する必要があります。(JSON-RPCメッセージを手動で作成することはお勧めしません)。

于 2012-04-10T02:26:45.263 に答える