2

単純なjQuery.ajaxメソッドを使用します。

    $.ajax({
        type: "GET",
        url: serviceUrl + '/GetAgentsGroupNameById',
        contentType: "application/json; charset=utf-8",
        data: { id: agentsGroupId },
        async: false,
        success: function (data) {
            agentsGroupName = data["d"];
        },
        error: function (request, message) {
            agentsGroupName = '';
        }
    });

'Get'リクエストが送信され、サーバーから整形式のjson応答が返されます。問題は、開発者ツールで、リクエストメソッドOPTIONSを使用して、同じURLに対して別のリクエストが生成され、応答が空であることがわかり、エラーが表示されることです。

OPTIONS http://localhost:1004/MobileService.asmx/GetSubscribedAgentsByUserId?userId=27 500 (Internal Server Error) 

このOPTIONSリクエストとは何ですか?なぜそれが起こるのですか?

PS contentType: "application / json; charset = utf-8"を削除すると(そしてdataType:jsonまたはjsonpを追加すると)、OPTIONSリクエストは生成されませんが、応答として整形式のjsonを取得できません。 (私はちょっとxmlドキュメントを取得します)

ところで:サービスはasp.netですc#:

[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public string GetAgentsGroupNameById(int id)

リクエストまたはレスポンスについてさらに詳細が必要な場合は、お知らせください

よろしくお願いします!!!

4

2 に答える 2

2

OPTIONSリクエストは、クロスオリジンリソースシェアリングが原因です。基本的には、ドメイン間のリソース共有を許可するかどうかを宛先サーバーに尋ねるWebブラウザーです。

つまり、ページが提供されているドメインとは異なるドメインにjsonリクエストを送信することはできません。

GETリクエストのみを実行している場合は、この問題を解決するJSONPを確認することをお勧めします。ただし、GETリクエストでのみ機能します。

これについては多くの質問があり、ここに詳細な回答があります

于 2012-07-11T14:40:23.720 に答える
-1

$ .ajax'Type'を切り替えて、GETではなくPOST動詞を使用してみてください。

于 2012-07-11T14:40:36.040 に答える