AJAX w/jQuery无法从请求中获得预期(或任何)响应
我没有从通过jQuery.ajaxapi发出的web服务请求中得到预期的响应。web服务正在获取请求(在发出jQuery.ajax()调用时,我可以看到它正在被处理)并返回正确的XML(在从浏览器发出GET请求时,我可以看到预期的XML) 我对我的web服务进行AJAX调用,如下所示:AJAX w/jQuery无法从请求中获得预期(或任何)响应,ajax,jquery,jquery-tools,Ajax,Jquery,Jquery Tools,我没有从通过jQuery.ajaxapi发出的web服务请求中得到预期的响应。web服务正在获取请求(在发出jQuery.ajax()调用时,我可以看到它正在被处理)并返回正确的XML(在从浏览器发出GET请求时,我可以看到预期的XML) 我对我的web服务进行AJAX调用,如下所示: $.ajax({ type: "GET", url: url_to_web_service, dataType: "xml", success: function (xml) {
$.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);
}
});
我总是在发出请求后调用error函数,就绪状态==4,状态==0
但是,如果我将数据类型更改为“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
它在Response选项卡下没有显示任何内容(表示负载为空?),在XML选项卡下,您可以看到:
XML Parsing Error: no element found Location: moz-nullprincipal:{a6fb7963-9b10-464c-a07d-c8e439b98f0d} Line Number 1, Column 1:
^
似乎我在jQuery.ajax()调用中做错了什么,它阻止了XML负载作为响应的一部分
有人能建议我在哪里查找错误吗
提前感谢您的帮助。我建议您尝试使用fiddler或类似工具,以便捕获您的请求和响应。安装后,您将在IE开发者工具中获得网络选项卡,您可以在其中捕获和检查网络流量,并在jquery发出请求后查看服务器的响应。在response body下,您将看到服务器发送了什么响应,并可能找到问题所在。我建议您尝试使用fiddler或类似工具,以便捕获您的请求和响应。安装后,您将在IE开发者工具中获得网络选项卡,您可以在其中捕获和检查网络流量,并在jquery发出请求后查看服务器的响应。在response body下,您将看到服务器发送了什么响应,并且可能会发现问题所在。我认为您的XML格式不正确。可能在XML文档的开头或结尾有一个空格或一行。因此,当您更改为文本时,您能够获得成功的响应。此外,您还收到以下错误:“XML解析错误:找不到元素位置:moz nullprincipal:{a6fb7963-9b10-464c-a07d-c8e439b98f0d}第1行第1列:“这告诉您XML有问题,浏览器无法将响应识别为XML我相信您的XML格式不正确。可能在XML文档的开头或结尾有一个空格或一行。因此,当您更改为文本时,您能够获得成功的响应。此外,您还将收到以下错误:“XML解析错误:未找到元素位置:moz nullprincipal:{a6fb7963-9b10-464c-a07d-c8e439b98f0d}第1行第1列:”这说明XML有问题,浏览器无法将响应识别为XML。看起来我毕竟违反了同源策略。当我将HTML文件与web服务放在同一个Tomcat服务器上时,代码按预期工作。换句话说,我认为file://path/to/my/htmlfile 看起来是同一个域,但显然不是这样的。看来我毕竟违反了同一原产地政策。当我将HTML文件与web服务放在同一个Tomcat服务器上时,代码按预期工作。换句话说,我认为file://path/to/my/htmlfile 看起来是同一个域,但显然它不是这样工作的。你尊重这个域吗?此web服务是否与客户端托管在同一域上?服务器设置是否正确
内容类型:text/xml
?此web服务返回的响应是否为有效的XML?谢谢您的建议,Darin。我正在为web服务使用一个URL,如下所示:,并且我正在本地机器上测试代码,因此我假设我遵守同源策略。我认为web服务正确设置了内容类型,请参阅上面的Firebug响应标题信息。由于从地址行直接调用web服务,web服务返回的XML在浏览器中显示时显示良好,并且W3schools XML验证器未显示任何错误。您是否尊重?此web服务是否与客户端托管在同一域上?服务器设置是否正确内容类型:text/xml
?此web服务返回的响应是否为有效的XML?谢谢您的建议,Darin。我正在为web服务使用一个URL,如下所示:,并且我正在本地机器上测试代码,因此我假设我遵守同源策略。我认为web服务正确设置了内容类型,请参阅上面的Firebug响应标题信息。由于从地址行直接调用web服务,web服务返回的XML在浏览器中显示时显示良好,并且W3schools XML验证程序未显示任何错误。感谢您的建议。我认为这里的问题是,我得到的是一个空的负载,当jQuery试图将其转换为XML文档时,它发出刺耳的声音,因为没有什么可读取/解析的内容。感谢您的建议。我认为这里的问题是,我得到的是一个空负载,当jQuery试图将其转换为XML文档时,它发出刺耳的声音,因为没有什么可读取/解析的内容。谢谢。我正在使用Firebug,它也具有您上面提到的功能。@james adams hehe,我也使用Firebug多年,但从未使用过“Net”选项卡,我现在看到了:)您能确认服务器将正确的ajax结果返回给您的客户端脚本吗?谢谢。我正在使用Firebug,它也具有您上面提到的功能。@james adams hehe,我也使用Firebug多年,但从未使用过“Net”选项卡,我现在看到了:)您能确认服务器将正确的ajax结果返回给您的客户端脚本吗?