Javascript 如何处理失败的JQuery DOM转换

Javascript 如何处理失败的JQuery DOM转换,javascript,jquery,Javascript,Jquery,我有一个常见的函数来显示AJAX调用导致的错误。其中一些消息是HTML字符串,我希望将其转换为DOM对象,然后使用.find()搜索其中的元素。其他的只是字符串(不是HTML)。在这种情况下,我不知道如何处理它…它正在生成异常 var messageTest = "" + this; if ($(messageTest).length == 0) { message += this; } else { message += $(messageTest).find('.messag

我有一个常见的函数来显示AJAX调用导致的错误。其中一些消息是HTML字符串,我希望将其转换为DOM对象,然后使用.find()搜索其中的元素。其他的只是字符串(不是HTML)。在这种情况下,我不知道如何处理它…它正在生成异常

var messageTest = "" + this;
if ($(messageTest).length == 0) {
    message += this;
} else {
    message += $(messageTest).find('.message-error').html();
}
仅供参考,本例中的“this”似乎是一个字符串对象,其数组中的每个项都是一个字符,因此在inspector中,它没有显示“我的消息在这里”,而是:

当它只是一个字符串(不是HTML)时,我在if语句行得到一个错误:

Uncaught Error: Syntax error, unrecognized expression:<The contents of messageText>
Uncaught错误:语法错误,无法识别的表达式:
那么,当输入可以是HTML字符串或仅仅是字符串时,如何优雅地处理这个问题呢


注意…最后,我只想要字符串,因为我将用它自己的HTML来包装它

< P>一种非常接近于你所拥有的方法是捕捉异常,在这种情况下,它是一个字符串(假设代码< < /COD>包含响应字符串):

var messageString=this;
var-messageDOM;
试一试{
messageDOM=$(messageString);
}捕获(ex){
//如果我们到了这里,messageString不是HTML
messageDOM=$('').text(messageString);
}   

我知道这并不能回答你的问题,但我觉得只要稍微改变一下方法,就能更好地实现你的愿望

如果您可以控制发送这些响应的服务器,我建议将它们作为JSON对象发送回去,如果您将每个结果都设置为JSON对象,那么您可以在返回的对象中将error属性设置为true/false,并随HTML或错误消息返回消息值


这在客户端系统上也更快,因为它是javascript的本机对象,jquery使用$.getJSON具有出色的JSON支持。

如果它是字符串或HTML,则始终可以将其附加到元素,然后进行排序:

var msg = $('<div />').append(this),
    err = msg.find('.message-error'),
    txt = err.length ? err.text() : msg.text();

message += txt;
var msg=$('').append(this),
err=msg.find('.message error'),
txt=err.length?err.text():msg.text();
message+=txt;

将字符串或HTML附加到空div中,如果div包含
.message error
元素,则获取该元素的文本,否则获取div的文本,该文本将等于原始字符串等。

为什么要将空字符串附加到该div中。。这应该正确
var messageTest=This
@Sushanth——这是我获取字符串对象的原语值的方法……但是自从发现可以执行eval(this.valueOf())之后……还没有测试它though@adeneo--你太棒了!那是完美和干净的。谢谢
var messageString = this;
var messageDOM;
try {
    messageDOM = $(messageString);
} catch(ex) {
    // If we got here, messageString is not HTML
    messageDOM = $('<div/>').text(messageString);
}   
var msg = $('<div />').append(this),
    err = msg.find('.message-error'),
    txt = err.length ? err.text() : msg.text();

message += txt;