问题描述
||
我没有通过jQuery.ajax API提出的Web服务请求获得预期的响应。 Web服务正在获取请求(在进行jQuery.ajax()调用时,我可以看到它正在处理),并返回正确的XML(从浏览器发出GET请求时,我可以看到期望的XML)。
我正在对Web服务进行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 \”,那么我将进入成功函数,但传递给该方法的响应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有效负载被包含在响应中。
谁能建议我应该在哪里寻找错误?
在此先感谢您的帮助。
解决方法
看来我毕竟违反了相同的原产地政策。一旦将HTML文件与Web服务放置在同一Tomcat服务器上,代码就会按预期工作。换句话说,我假设file:// path / to / my / htmlfile和http:// localhost:8080 / my / web / service似乎是同一个域,但是显然这不是它的工作方式。
,我建议您尝试使用提琴手或类似工具,以便捕获您的请求和响应。安装后,您将在IE开发人员工具中获得“网络”标签,可以在其中捕获和检查网络流量,并在jquery发出请求后查看服务器的响应。在响应主体下,您将看到响应中发送了什么服务器,并可能找出了问题所在。
,我相信您的XML格式不正确。也许您在XML文档的开头或结尾有一个空格或一行。因此,当您更改为文本时,您将获得成功的响应。另外,您还会收到此错误:\“ XML解析错误:找不到元素位置:moz-nullprincipal:{a6fb7963-9b10-464c-a07d-c8e439b98f0d}行号1,列1:\”这告诉您有XML出现问题,浏览器无法将响应识别为XML