0

Web開発の用語で私の初心者を許してください。

次の[WebMethod]を実行しようとしています。

public static void CreatePendingCaseFromChat(string userInputs)
{
    //Do a bunch of stuff here with the userInputs string
}

次のAJAX(別のサーバーに存在する)を使用する場合:

$.ajax({    type: "POST", 
            url: "http://www.MyCoolWebDomain.com/Code/MyCode.aspx/CreatePendingCaseFromChat",
            crossDomain: true,
            data: JSON.stringify(parameters), 
            contentType: "application/json; charset=utf-8", 
            dataType: "json",
            success: function (data){alert("success in ajax call")}, 
            error: function (data){alert("error in ajax call")}
        });

MyCode.aspxには、Page_Load()メソッド内に次の行が含まれています。

Response.AppendHeader("Access-Control-Allow-Origin", "*"); //Allow Cross domain AJAX call, update the "*" to be a specific URL
Response.AppendHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
Response.AppendHeader("Access-Control-Allow-Headers", "content-type, x-requested-with");

ajax呼び出しの代わりに、次のことを行うと、次のようになります。

var invocation = new XMLHttpRequest();
var url = "http://www.MyCoolWebDomain.com/Code/MyCode.aspx/CreatePendingCaseFromChat"
if (invocation) {
    invocation.open('POST', url, false);
    invocation.send();
    }
else {
    alert("no invocation");
}

次に、FireBugを使用して、次の応答ヘッダーが設定されていることを確認できます。

Access-Control-Allow-Head...    content-type, x-requested-with
Access-Control-Allow-Meth...    GET, POST, OPTIONS
Access-Control-Allow-Orig...    *

AJAX呼び出しでは、これらのヘッダーは表示されません。

AJAX呼び出しでも、XHR呼び出しでも、どちらの方法でもこれを機能させたいと思います。

XHR呼び出しの場合、userInputs文字列をWebMethodに送信する方法がわかりません。AJAX呼び出しの場合、プリフライトを通過させることも、呼び出されることもできません(OPTIONS呼び出し)。

4

1 に答える 1

1

私は質問にたくさんのコードを投稿しました:

CORS - Ajax エラー関数が、401 を返す API リクエストのエラー コードを 0 として報告する

MVC4 を使用していますが、これを機能させるために必要なすべてを提供する必要があります。

于 2013-01-11T13:48:19.207 に答える