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 = '';
        }
    });

发送“获取”请求,我从服务器获得格式正确的 json 响应。问题是我在开发人员工具中看到另一个请求生成到同一个 URL,请求方法为:OPTIONS,响应为空,我看到一个错误:

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 请求是因为跨域资源共享。它基本上是网络浏览器询问目标服务器是否允许跨域资源共享。

简而言之,您不能向与提供页面的域不同的域发出 json 请求。

如果您只执行 GET 请求,您可能需要查看解决此问题的JSONP 。但是,它仅适用于 GET 请求。

这方面有很多问题,这里有一个详细的答案

于 2012-07-11T14:40:23.720 回答
-1

尝试切换您的 $.ajax 'Type' 以使用 POST 动词而不是 GET。

于 2012-07-11T14:40:36.040 回答