AJAX w / jQuery没有得到请求的预期(或任何)响应

时间:2011-05-25 15:57:46

标签: ajax jquery jquery-tools

我没有从我通过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有效负载作为响应的一部分被包含。

有人可以建议我应该在哪里寻找错误吗?

提前感谢您的帮助。

3 个答案:

答案 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