Jquery.ajax,成功:函数(数据)不返回plainObject

时间:2014-03-11 01:01:46

标签: javascript jquery ajax

根据Jquery.ajax的文档,成功是一个委托(至少我认为是,它允许你定义要调用的函数),它将调用一个函数并传递给它一个

PlainObject, String, jqXHR

但是当我使用以下代码时,我发现当我使用alert进行检查时,xml不是PlainObject。

$(document).ready(function () {
    $("#dvContent").append("<ul></ul>");
    $.ajax({
        type: "GET",
        url: "message.xml",
        dataType: "xml",
        success: function (xml) {
            alert(jQuery.isPlainObject(xml));
            alert(jQuery.isPlainObject($(xml)));
            $(xml).find('Book').each(function () {

                var sTitle = $(this).find('Title').text();
                var sPublisher = $(this).find('Publisher').text();
            });
        },
        error: function () {
            alert("An error occurred while processing XML file.");
        }
    });
});

这怎么可能?

1 个答案:

答案 0 :(得分:1)

这是动态语言的本质。即使文档表明它将是PlainObject,但语言无法强制执行。因为返回的内容类型是xml而不是可以评估为PlainObject的内容。

以下问题详细介绍了isPlainObject函数: IsPlainObject, thing?

从jQuery文档中,关键的一点是它将是

  

<强>成功:

     

类型:函数(PlainObject数据,字符串textStatus,jqXHR jqXHR)

     

该函数传递三个参数:从服务器返回的数据,根据dataType参数格式化; ...

因此,通过在方法签名中将其描述为PlainObject,他们说(如果可能的话)它将被评估为一个真正的javascript对象,否则,你就是你自己而且它是原始响应来自服务器。