1

与えられた ajax 呼び出しから webservice メソッドを呼び出そうとしています。私の Web サービスは同じアプリケーションでホストされています。

$.ajax({
    type: "POST",
    url: "http://1.1.1.1/demo/sblead.asmx/SBLeadsSave",
    data: "{'whenNeeded':'" + whenNeeded + "','howLong': '" + howLong + "','size': '" + Size + "','customerName': '" + name + "','mobile': '" + mobile + "','email': '" + email + "','comments': '" + comments + "','nextContract': '','unitLocation': '" + unitLocation + "'}",
    contentType: "application/json; charset=utf-8",

    dataType: "jsonp",
    callback: '?',
    crossDomain: true,

    success: function (response) {
        // debugger;
        var res = response.d;
        if (res == "True") {
            location.href = "http://1.1.1.1/SBleadSuccess.htm";
        } else {
            alert('Data Saving failed please try again');
        }
    },
    failure: function (result) {
        alert(result.status + ' ' + result.statusText);
    },
    beforeSend: setHeader

Chrome 開発者ツールを使用して表示すると、Web サービス メソッドが呼び出されません。-> ネットワーク オリジンhttp://www.example.comが Access-Control-Allow-Origin で許可されていないため、応答が表示されます。

テストサーバーでは機能していますが、本番サーバーでは機能していません。

どうすればこの問題を解決できますか?

4

2 に答える 2

2

応答ヘッダーで本番サーバーを許可する必要があります。

Access-Control-Allow-Origin: <production origin> | *

詳細については、MDN: HTTP アクセス制御 (CORS)を参照してください。

于 2012-09-27T13:10:04.410 に答える
0

を呼び出しているためですがhttp://1.1.1.1/demo/sblead.asmx/SBLeadsSave、それは本番サーバーの場所ではない可能性があります。

本番サーバーの場所を入力するか、単に/demo/sblead.asmx/SBLeadsSave.

于 2012-09-27T13:10:51.707 に答える