$ .Ajax和$ .Post没有在开发环境中工作

时间:2013-12-28 20:21:40

标签: ajax jquery

我有一个使用$ .Ajax的简单函数。当我将此页面部署到我的在线网站时它工作正常,但在我的开发环境中它不起作用,但没有错误。我尝试了$ .Ajax和$ .Post。两者都不起作用,但在F12分析器工具中,我看到了流量。

任何想法? 感谢。

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

}

2 个答案:

答案 0 :(得分:2)

查看浏览器的错误控制台。那里应该有一条信息性的信息。

您的开发环境可能与您调用的端点不在同一个域中,因此same-origin policy阻止您的脚本从中检索结果。由于这应该是一个开发环境,您应该在该环境中设置GetData.asmx脚本的副本,而不是调用生产端点,并将其引用为/GetData.asmx(即,作为您的脚本中的域相对路径。

答案 1 :(得分:1)

由于same origin policy,您无法执行跨域请求。

在您的控制台中,您可以看到这实际上是您问题的根源:
控制台说(Aborted),提供CORS preflight个发起人,即您尝试执行跨域请求,但由于安全原因,它已中止。

它之所以适用于生产而不是开发,是因为您的生产环境可能位于同一个域myshulmgr.com)中,而开发环境不是