jQuery 1.5.2 显示空响应的 [object XMLDocument]

发布于 2024-11-03 00:31:26 字数 561 浏览 2 评论 0原文

我有一个 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 上完美工作 有什么想法吗?

问候 :)

I have a Url from which I can get a string

If the response string contains something, everything goes well, but (god forbid!) if the result would be an empty string like "" jQuery 1.5.2 will display it as [object XMLDocument]

follow the codes plz :

 $.post('/Applicant/RequestedJob/IsThereActivePeriod',{},
    function(data){     
        if(data == '' ) 
        {
                //do something here!
        }
        else 
        {
            console.log(data.toString());
            // [object XMLDocument]  will be printed in console.
        }        
});

Perhaps I should mention that it used to work perfectly on jQuery 1.4.4
any idea?

Regards :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南笙 2024-11-10 00:31:26

您应该在 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 会尝试根据 对此

默认:智能猜测(xml、json、
脚本或 html)。

由于没有返回内容,它显然是在猜测 XML。通过将“html”作为数据类型传递,您可以强制 jQuery 将响应解释为 HTML,并以纯文本形式存储结果。

根据一些评论,适当的内容类型标头应该允许 jQuery 推断您的空字符串是 HTML,从而无需在 ajax 调用中显式设置预期的 dataType 即可获得相同的结果。

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

You should set the expected dataType of the response in your ajax call, like this:

$.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'
);

Without this, jQuery tries to infer the response type, according to this:

Default: Intelligent Guess (xml, json,
script, or html).

With no returned content, it's apparently guessing XML. By passing it 'html' as the dataType, you force jQuery to interpret the response as HTML, and store the result in plain text.

As per some of the comments, an appropriate content-type header should allow jQuery to infer that your empty string is HTML, achieving the same result without setting the expected dataType explicitly in the ajax call.

The reason you get [object XMLDocument] is because data is an XML document object, and its toString() is being called.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文