0

我正在尝试编写一些 JavaScript 来调用我创建的 Web 服务。此 Web 服务是另一个 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”。

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

谢谢

4

1 回答 1

0

看起来您缺少将 JSON 包装到回调调用中。因为dataType:"jsonp"jquery 会向这样的 URL 发送请求:

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

因此,您必须从回调中获取名称并像这样(在服务器上)包装您的响应:

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

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

于 2012-11-14T15:17:06.777 回答