AJAX w/jQuery无法从请求中获得预期(或任何)响应

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) {

我没有从通过jQuery.ajaxapi发出的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);
    }
});
我总是在发出请求后调用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结果返回给您的客户端脚本吗?