注意:在一些评论的帮助下,这似乎是不可能的
我使用 jQuery ajax 调用来发送电子邮件地址,在调用的 PHP 文件中,我根据结果返回错误或成功消息。
现在我想在我的 jQuery $.post
之后提醒这个结果成功了,问题是调用的 PHP 文件包含一个配置文件,该文件也有一个 Javascript 文件,所以我的数据将如下所示:
<script type="text/javascript" src="x.js"></script>Message
所以我尝试了以下方法:
数据
<script type="text/javascript"> src="x.js"></script><p>Message</p>
我在我的 $.post
中尝试了两种不同的东西:
发布
$.post('ajax.php',function(data){
alert($(data).find('p'));
// this returns [object Object]
alert($(data).find('p').html());
// this returns null?
}
事实上alert($(data).find('p'));
返回[object Object]
让我认为它正在工作,但后来我不明白为什么 .html()
返回null
。如果我检查data
通过 firebug,它准确地显示了我上面输入的内容。
一些额外信息
console.log(data)
返回
<script type="text/javascript"> src="x.js"></script><p>Message</p>
console.log($(data).find('p'))
返回一个 jQuery 对象。
console.log($(data).find('p').length);
返回0
$('html').append(data);
console.log($('p').html());`
返回Message
正如预期的那样。
最终编辑
我没有想到 $
在$(data).find('p')
可能就是它返回 [object Object]
的原因.
现在我想了一下,很明显不可能做到我所要求的,因为我试图在字符串上使用 jQuery 的选择器引擎。我将更改文档结构以从配置文件中删除 JS 引用。
最佳答案
要使用选择器,您首先需要该字符串成为 DOM 树的一部分。 $(data) 不这样做 自动地,您需要将其附加到元素(如正文)或替换现有元素。
onComplete: function(content) {
content.find("#whatever"); // won't work
$("#existingElement").html(content);
$("#existingElement").find("#whatever"); // works
}
关于javascript - 使用jquery从post数据中检索元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6307779/