JQuery ajax调用跨域webservice

时间:2011-05-24 23:10:26

标签: javascript jquery asp.net web-services

我想使用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,并修复了我的数据字符串。

Service返回有效的JSON对象。我可以在其他网站上的firebug上看到它,它使用这项服务。但该网站正在获得普通的json(因为它有一个域)。

那么,如果web服务返回有效的JSON(而不是jsonp),我不能使用与jsonp相同的方法?如何从其他域获取json web-service?

3 个答案:

答案 0 :(得分:3)

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

只能使用"个字符来引用字符串。

此外,您无法进行跨域JSON-P POST请求。

答案 1 :(得分:3)

您无法使用JSONP执行跨域POST请求。 JSONP的工作原理是向页面添加script标记。 script标记始终使用GET HTTP请求获取其源。你不会发布任何数据。

答案 2 :(得分:2)

问题摘要:

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