【问题标题】:jQuery 1.5.2 displays [object XMLDocument] for empty responsesjQuery 1.5.2 为空响应显示 [object XMLDocument]
【发布时间】:2011-04-20 07:44:07
【问题描述】:

我有一个可以从中获取字符串的 URL

如果响应字符串包含某些内容,一切正常,但是(上帝保佑!)如果结果是空字符串,如 "",jQuery 1.5.2 会将其显示为 [object XMLDocument]

请按照代码:

 $.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 上完美运行 有什么想法吗?

问候:)

【问题讨论】:

  • openDialog jquery ui 对话框??
  • 是的!但重点在别的地方!!! ;-) 它是数据参数的值
  • 你的意思是你在对话框中得到[object XMLDocument]??
  • 不!应该是空字符串的数据值是 [object XMLDocument]
  • 表示某处有一些标题header('content-type: xml/doc')

标签: ajax jquery response


【解决方案1】:

您应该在 ajax 调用中设置响应的预期数据类型,如下所示:

$.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,并将结果存储为纯文本。

根据某些 cmets,适当的 content-type 标头应该允许 jQuery 推断您的空字符串是 HTML,无需在 ajax 调用中显式设置预期的 dataType 即可获得相同的结果。

您得到[object XMLDocument] 的原因是因为data 是一个XML 文档对象,并且它的toString() 正在被调用。

【讨论】:

  • 保罗的精彩解释!我实际上以为我永远找不到这个问题的答案,因为在我的情况下,它只发生在 Firefox 浏览器中(即使我没有指定 dataType,其他浏览器也没有呈现它)。一定要喜欢 StackOverflow !!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 2018-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多