jQuery ajax跨域调用

时间:2012-04-09 14:59:56

标签: jquery jsonp

我有以下代码来进行jsonp调用。

  var contacts;
     $.ajax({
                            url: "http://localhost:51973/Service1/GetContacts",
                            type: "GET",
                            async: false,
                            data: { companyName: company },
                            dataType: "jsonp",
                            success: function(data) {
                                contacts = data;
                            },
                            error: function (XMLHttpRequest, textStatus, errorThrown) {
                                alert("error " + XMLHttpRequest.statusText);
                            }
                        });

但无论出于何种原因,我都将联系人定义为未定义。我使用提琴手检查了流量,我发现它得到了以下响应。

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Mon, 09 Apr 2012 14:52:33 GMT
X-AspNet-Version: 4.0.30319
Content-Length: 100
Cache-Control: private
Content-Type: application/x-javascript
Connection: Close

jQuery17107471185381512466_1333983153278([{"Email":"john@test.com","Name":"Test Company"}]);

那么为什么联系人变量没有正确设置?

1 个答案:

答案 0 :(得分:5)

我猜你正试图在ajax调用之后立即使用contacts变量。你不能这样做。 ajax调用是异步的,因此在ajax调用完成后的某个时间完成。完成后,将调用成功处理程序。您需要在成功处理程序中放置实际使用联系人信息的任何代码或任何函数调用。这是异步编程,您必须以不同的方式编写代码。

success: function(data) {
    contacts = data;
    // put your code or function calls here that use the contacts data
},