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

问题描述

|| 我没有通过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