【发布时间】:2011-09-12 13:28:01
【问题描述】:
注意:在一些 cmets 的帮助下,这似乎是不可能的
我正在使用 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,它会准确显示我在上面输入的内容。
一些额外信息
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 引用。
【问题讨论】:
-
如果没有被使用,为什么 PHP 页面会写出一个 JS 引用?
-
您可以发布通过 ajax 返回的数据(使用 firebug 等)吗?也可以尝试添加
alert($(data).find('p').length);并用结果更新帖子? -
console.log(data)包含什么,console.log($(data).find('p'))包含什么? -
@Fosco,因为需要相同配置文件的所有其他页面都使用 JS 引用。 @Niklas,
console.log(data)包含我在问题中的数据下键入的内容(就像我说的那样),console.log($(data).find('p'))返回一个 jQuery 对象。 @Cybernate,console.log($(data).find('p').length);返回 0。 -
我不太确定你可以通过这种方式转换它并使用 find。尝试将它附加到 dom 树,以便可以自然地解析它。尝试附加它。 $(..) 总是返回 jQuery 对象,因为 $ 是 jQuery 对象,而且 find 是扩展 $ 的空集合,它也将是对象
标签: javascript jquery ajax select http-post