我有一个Url,我可以从中获取字符串
如果响应字符串包含某些内容,一切顺利,但(上帝禁止!)如果结果为空字符串,则“”jQuery 1.5.2会将其显示为 [object XMLDocument]
按照代码plz:
$.post('/Applicant/RequestedJob/IsThereActivePeriod',{},
function(data){
if(data == '' )
{
//do something here!
}
else
{
console.log(data.toString());
// [object XMLDocument] will be printed in console.
}
});
也许我应该提到它曾经在jQuery 1.4.4上完美运行 任何想法?
问候:)
答案 0 :(得分:9)
您应该在ajax调用中设置响应的预期dataType,如下所示:
$.post('/Applicant/RequestedJob/IsThereActivePeriod',{},
function(data){
if(data == '' )
openDialog('/Applicant/RequestedJob/AddRequestedJobWindow','pnlRequestedJob','Request Window');
else
{
msgbox.show(data.toString(),'Error', msgBoxButtons.okOnly);
console.log(data.toString());
}
},
'html'
);
如果没有这个,jQuery会根据to this尝试推断响应类型:
默认值:智能猜测(xml,json, 脚本或HTML)。
没有返回的内容,显然是在猜测XML。通过将'html'作为dataType传递,您强制jQuery将响应解释为HTML,并将结果存储为纯文本。
根据一些注释,适当的内容类型标头应该允许jQuery推断您的空字符串是HTML,实现相同的结果,而无需在ajax调用中显式设置预期的dataType。
获得[object XMLDocument]
的原因是因为data
是一个XML文档对象,并且正在调用它的toString()。