我没有从我通过jQuery.ajax API创建的Web服务请求中获得预期的响应。 Web服务正在获取请求(我可以看到它在进行jQuery.ajax()调用时被处理)并返回正确的XML(当我从浏览器发出GET请求时,我可以看到预期的XML)。
我正在对我的网络服务进行AJAX调用:
$.ajax({
type: "GET",
url: url_to_web_service,
dataType: "xml",
success: function (xml) {
// the array of image source locations we'll build from the XML
var thumbImgArray = new Array();
// find every image source location and add it to the array
$(xml).find("image_src_location").each(function () {
thumbImgArray.push($(this));
});
// update the scrollable thumbnail images using the new array of image source locations
updateScrollableThumbs($(xml).find("indicator"), thumbImgArray);
},
error: function (xhr, err) {
alert("AJAX error function invoked: \n\treadyState: " + xhr.readyState + "\n\tstatus: " + xhr.status);
$('.error').html("responseText: " + xhr.responseText);
}
});
我总是在请求发出后调用错误函数,状态为== 4,状态为== 0.
但是,如果我将dataType更改为“text / xml”或“text”,那么我将进入success函数,但传递给方法的响应XML数据为空(jqXHR对象的responseXML属性为null)
请求一旦Firebug显示如下:
Response Headers
Server Apache-Coyote/1.1
Content-Type text/xml;charset=ISO-8859-1
Content-Language en-US
Content-Length 1326
Date Wed, 25 May 2011 16:02:19 GMT
Request Headers
Host localhost:8080
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110420 Firefox/3.6.17 ( .NET CLR 3.5.30729)
Accept application/xml, text/xml, */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
Origin null
它在“响应”选项卡下没有显示任何内容(表示空的有效负载?),在XML选项卡下,您会看到:
XML Parsing Error: no element found Location: moz-nullprincipal:{a6fb7963-9b10-464c-a07d-c8e439b98f0d} Line Number 1, Column 1:
^
似乎我在jQuery.ajax()调用中做错了,这阻止了XML有效负载作为响应的一部分被包含。
有人可以建议我应该在哪里寻找错误吗?
提前感谢您的帮助。
答案 0 :(得分:1)
看起来我毕竟违反了相同的原始政策。一旦我将HTML文件放在与Web服务相同的Tomcat服务器上,代码就按预期工作了。换句话说,我假设file:// path / to / my / htmlfile和http://localhost:8080/my/web/service看起来是同一个域,但显然这不是它的工作方式。
答案 1 :(得分:0)
我建议您尝试使用fiddler或类似工具,这样您就可以捕获您的请求和响应。安装后,您将在IE开发人员工具中获得网络选项卡,您可以在其中捕获和检查网络流量,并在jquery发出请求后查看服务器的响应。在响应正文中,您将看到响应中发送的服务器,并可能找出问题所在。
答案 2 :(得分:0)
我认为您的XML格式错误。也许您在XML文档的开头或结尾有一个空格或行。因此,当您更改为文本时,您可以获得成功的响应。此外,您收到此错误:“XML解析错误:找不到元素位置:moz-nullprincipal:{a6fb7963-9b10-464c-a07d-c8e439b98f0d}行号1,第1列:”这告诉您有错误使用XML和浏览器无法将响应识别为XML