我有一个使用$ .Ajax的简单函数。当我将此页面部署到我的在线网站时它工作正常,但在我的开发环境中它不起作用,但没有错误。我尝试了$ .Ajax和$ .Post。两者都不起作用,但在F12分析器工具中,我看到了流量。
任何想法? 感谢。
<script >
function RunAjax()
{
alert("before post");
$.post("http://myshulmgr.com/GetData.asmx/GetEventMembers", { PID: "32", EventID: "8" },
function (data) {
alert("Data Loaded: " + data);
});
$.ajax({
type: "POST",
url: "http://myshulmgr.com/GetData.asmx/GetEventMembers",
//data: {PID: iPID, EventID: iEventID},
data: "{'PID': '" + 32
+ "','EventID': '" + 8 + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (jsonRes)
{
alert(jsonRes);
},
failure: function (msg)
{
alert(msg);
}
});
}
答案 0 :(得分:2)
查看浏览器的错误控制台。那里应该有一条信息性的信息。
您的开发环境可能与您调用的端点不在同一个域中,因此same-origin policy阻止您的脚本从中检索结果。由于这应该是一个开发环境,您应该在该环境中设置GetData.asmx
脚本的副本,而不是调用生产端点,并将其引用为/GetData.asmx
(即,作为您的脚本中的域相对路径。
答案 1 :(得分:1)
由于same origin policy,您无法执行跨域请求。
在您的控制台中,您可以看到这实际上是您问题的根源:
控制台说(Aborted)
,提供CORS preflight
个发起人,即您尝试执行跨域请求,但由于安全原因,它已中止。
它之所以适用于生产而不是开发,是因为您的生产环境可能位于同一个域(myshulmgr.com
)中,而开发环境不是。