无法通过JQuery Ping Web服务

时间:2012-11-14 15:05:44

标签: jquery ajax

我正在尝试编写一些调用我创建的Web服务的JavaScript。此Web服务是另一个

的一部分
function ping() {
  $.ajax({
    url: "http://myserver/OtherSite/ping?$format=json",
    dataType: "jsonp",
    type: "GET",
    success: ping_Succeeded,
    error: ping_Failed
  });
}

function ping_Succeeded(result) {
  alert("success");
}

function ping_Failed(e1, e2, e3) {
  console.log(e1 + "\n" + e2 + "\n" + e3);
}

当我执行此代码时,我在Fiddler中注意到我对Web服务的请求没问题。返回200。我期待的JSON就在那里。但是,在JavaScript控制台中,我看到一条错误消息:“Uncaught SyntaxError:Unexpected Token:”。

在控制台中查看时,我注意到以下内容:“消息:”jQuery18209005181000102311_1352904505837未被调用“。

我不明白我做错了什么。有人可以告诉我我的代码有什么问题吗?

谢谢

1 个答案:

答案 0 :(得分:0)

您似乎缺少将JSON包装到回调调用中。 由于dataType:"jsonp",jquery会将请求发送到这样的URL:

OtherSite/ping?$format=json&callback=jQuery18204326352379284799_1352906037982&_=1352906037995

所以,你必须从回调中获取一个名字,然后将你的回复包装起来(在服务器上):

 jQuery18204326352379284799_1352906037982({ "d":{ "result":"Test 37" } })

或者您可以尝试将dataType:"jsonp"替换为dataType:"json"