jQuery 1.5.2显示空对象的[object XMLDocument]

时间:2011-04-20 07:44:08

标签: ajax jquery response

我有一个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上完美运行 任何想法?

问候:)

1 个答案:

答案 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()。