根据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.");
}
});
});
这怎么可能?
答案 0 :(得分:1)
这是动态语言的本质。即使文档表明它将是PlainObject
,但语言无法强制执行。因为返回的内容类型是xml
而不是可以评估为PlainObject
的内容。
以下问题详细介绍了isPlainObject
函数:
IsPlainObject, thing?
从jQuery文档中,关键的一点是它将是
<强>成功:强>
类型:函数(PlainObject数据,字符串textStatus,jqXHR jqXHR)
该函数传递三个参数:从服务器返回的数据,根据dataType参数格式化; ...
因此,通过在方法签名中将其描述为PlainObject
,他们说(如果可能的话)它将被评估为一个真正的javascript对象,否则,你就是你自己而且它是原始响应来自服务器。