繁体   English   中英

JQuery ajax 调用跨域webservice

[英]JQuery ajax call to cross-domain webservice

我想使用 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 object。 我可以在使用此服务的其他站点上的 firebug 上看到它。 但是该站点正在变得通用 json(因为它有一个域)。

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

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

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

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

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

问题总结:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM