从jQuery .ajax()调用Web服务问题

我有一个调用跨域的web服务的问题。我在这里阅读了一些关于它的文章,但我没有真正找到解决方案。我刚刚了解到我需要的数据格式为json,因为我总是在登录Error: Access denied.时尝试从服务中获取xml数据,但现在我遇到了不同的问题。这是我的电话.ajax():从jQuery .ajax()调用Web服务问题

$.ajax({ 

type: "GET",

contentType: "application/jsonp; charset=utf-8",

url: "http://tomas/_vti_bin/EmmaService.asmx/GetResult",

dataType: "jsonp",

data: {

value : "testValue",

converstionId : "testId"

},

success: function(resp) {

alert("success: " + resp);

},

error: function (xhr, ajaxOptions, thrownError) {

alert("error status: " + xhr.status);

alert("error status text: " + xhr.statusText);

alert("error response text: " + xhr.responseText);

},

});

由此我得到错误有以下3个警报:

error status: 200 

error status text: success

error response text: undefined

我不明白的是error status text: success

代码在我的Web服务:

[WebMethod(EnableSession = false, Description = "Gets result")] 

public EmmaServiceResult GetResult(string value, string converstionId)

{

...

return result;

}

如何得到这个工作有什么建议?谢谢! :)

回答:

尝试增加?callback=?到您的网址的结尾:

​​

另外,尽量看thrownError,以确定哪些错误是:

alert("error response text: " + thrownError); 

这可能是一个解析错误等等。其实并没有涉及到ajax请求,但是你如何定义应该如何处理响应。

另外,看看here看看如何从WCF服务返回json。

[WebInvoke(Method = "GET", 

RequestFormat = WebMessageFormat.Json,

ResponseFormat = WebMessageFormat.Json,

UriTemplate = "players")]

回答:

我最近在从AJAX调用中制作跨域请求时遇到了很多问题。我们最终无需修改API即可使用它,但我们确实需要访问托管API的服务器,以便我们可以在响应中发送一些标题。但是整个问题是一个调试的痛苦,我发现所有浏览器都报告有意义的错误是可怕的。因此,如果这不能解决您的问题,潜在地可能无法为您工作并提前道歉。

该解决方案需要您提出CORS请求,并向您的服务器响应添加一些标头。这些页面都是很好的资源:

https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS http://www.html5rocks.com/en/tutorials/cors/

我觉得你的情况,因为你正在做一个基本的要求,你不处理cookies,您可以留下您的电话阿贾克斯基本保持不变,如果您发送JSON,只需将dataType更改为“json”,将contentType更改为“application/json”。

那么你必须修改服务器有它通过将这些标头的响应处理CORS预检要求:

Access-Control-Allow-Origin: * 

Access-Control-Allow-Methods: GET

Access-Control-Allow-Headers: Content-Type

(见这个问题:jQuery CORS Content-type OPTIONS)

希望这会为你工作!

以上是 从jQuery .ajax()调用Web服务问题 的全部内容, 来源链接: utcz.com/qa/266633.html

回到顶部