我使用简单的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响应。 问题是我在开发人员工具中看到另一个请求生成到同一个URL,请求方法:OPTIONS,响应为空,我看到一个错误:
OPTIONS http://localhost:1004/MobileService.asmx/GetSubscribedAgentsByUserId?userId=27 500 (Internal Server Error)
这个OPTIONS请求是什么? 为什么会这样?
P.S。我提到如果我删除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)
请让我知道您是否需要有关请求或响应的更多详细信息
先谢谢!!!
答案 0 :(得分:2)
OPTIONS请求是因为Cross origin resource sharing。它基本上是Web浏览器,询问目标服务器是否允许跨域资源共享。
简而言之,您不能将json请求发送到与提供该页面的域不同的域。
如果您只是在进行GET请求,您可能需要查看解决此问题的JSONP。但是,它仅适用于GET请求。
对此有很多疑问,详情请回答here
答案 1 :(得分:-1)
尝试切换$ .ajax'Type'以使用POST动词而不是GET。