从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