【问题标题】:JQuery ajax call to cross-domain webservicejQuery ajax 调用跨域 web 服务
【发布时间】:2011-05-24 23:10:26
【问题描述】:

我想使用 jquery 从客户端使用跨域 Web 服务

function TestService() {
    $.ajax({
        url: "http://service.asmx/GetGeoCompletionList",
        data: { "prefixText":"eka", "count":"10", "contextKey":"Trace_0$Rus" },
        dataType: "jsonp",
        type: "GET",
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            alert(data);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(XMLHttpRequest.statusText);
        }
    });
}

在错误处理程序中,我有: textStatus=parseerror

XMLHttpRequest 的状态为 200 和 readyState 4

errorThrown 是jQuery16103495572647140...78197139 was not called

我已经花了很多时间在它上面,但无法让它工作。你能帮帮我吗?

更新

谢谢,我改用 GET,并修复我的数据字符串。

服务返回有效的 JSON 对象。我可以在使用此服务的其他站点上的 firebug 上看到它。但是该站点正在获取通用 json(因为它有一个域)。

那么,如果网络服务返回有效的 JSON(不是 jsonp),我不能对 jsonp 使用相同的方法吗?使用其他域的 json web-service 可以做什么?

【问题讨论】:

标签: javascript jquery asp.net web-services


【解决方案1】:

您传递并声称是 JSON 的字符串不是 JSON。

只有" 字符可以用于引用字符串。

另外,您不能发出跨域 JSON-P POST 请求。

【讨论】:

    【解决方案2】:

    您不能使用 JSONP 进行跨域 POST 请求。 JSONP 通过将script 标签添加到页面来工作。 script 标签总是使用 GET HTTP 请求获取它们的源。您不会收到任何发布的数据。

    【讨论】:

      【解决方案3】:

      问题总结:

      1. 确保您使用的是有效的 JSON 正如@Quentin 提到的。
      2. 确保您使用的是 GET 请求,如 @lonesomeday 提到了
      3. 确保来自服务器的响应是 JSONP,如seen here

      【讨论】:

        猜你喜欢
        • 2018-12-25
        • 2013-05-15
        • 2013-08-14
        • 1970-01-01
        • 1970-01-01
        • 2012-11-29
        • 1970-01-01
        • 2012-02-11
        相关资源
        最近更新 更多