2

一部のデータを送受信するクロス ドメイン リクエストを作成しようとしています。を通り越すことができませんobject errorNo Transportエラーが発生する前に、追加するとQuery.support.cors = true;この問題が解決しました。

var url = "http://CROSSDOMAINSERVER:PORT/Service1.svc/GetDataUsingDataContract";
            $.ajax({
                type: 'GET',
                url: url,
                data: 'tool=1&product=Some%20Product&details=9&bogus=should%20not%20pass%20validation', 
                datatype: "jsonp",
                contentType: "application/json",
                success: function (response) {
                    alert(response.data);
                },
                error: function (error) {
                    alert(error.statusText);
                }
            });

ブラウザに URL を入力すると、次のようになります。

 http://CROSSDOMAINSERVER:PORT/Service1.svc/GetDataUsingDataContract?&tool=1&product=Some%20Product&details=9&bogus=should%20not%20pass%20validation

正しい応答が得られます。

{"d":{"__type":"ClientSideData:#ProdResourceToolService","details":"9","product":"Some Product","result":"1","site":"Somewhere, SD","systime":"2\/6\/2013 2:50:20 PM","team":"0000000000","tool":"1","user":"username"}}

ajax を使用すると、データベースに送信したり、データを返したりしませんobject error。これを回避する方法について何か提案はありますか?

http://CROSSDOMAINSERVER:PORT/また、ローカルでデバッグするときに削除するかどうかを指定する必要がありますvar url。正しい json 応答が得られます。クロスドメインが機能しないのはなぜですか?

4

1 に答える 1

3

これはあなたの現在の応答です:

{
    "d": {
        "__type": "ClientSideData:#ProdResourceToolService",
        "details": "9",
        "product": "Some Product",
        "result": "1",
        "site": "Somewhere, SD",
        "systime": "2/6/2013 2:50:20 PM",
        "team": "0000000000",
        "tool": "1",
        "user": "username"
    }
}

これは有効なJSON文字列です。ただし、有効なJSONPではありません。可能であれば、サービスが json を関数でラップするようにします。

responseFunc({
    "d": {
        "__type": "ClientSideData:#ProdResourceToolService",
        "details": "9",
        "product": "Some Product",
        "result": "1",
        "site": "Somewhere, SD",
        "systime": "2/6/2013 2:50:20 PM",
        "team": "0000000000",
        "tool": "1",
        "user": "username"
    }
});

そして、あなたの$.ajax()呼び出しで、プロパティを追加してください: jsonpCallback: 'responseFunc'.

dataまた、をオブジェクトとして渡すことをお勧めします。

data: { tool: 1, product: 'Some Product' } //etc...

問題なくサーバー側からサービスにアクセスできる場合は、httphandler (.ashx など) を作成して、JSON を生成させることができます。そうすれば、クライアント側でドメイン間の問題に対処する必要がなくなります。

于 2013-02-06T21:18:06.083 に答える