【问题标题】:Retrieve element from post data with jquery使用 jquery 从发布数据中检索元素
【发布时间】: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 对象。 @Cyber​​nate,console.log($(data).find('p').length); 返回 0。
  • 我不太确定你可以通过这种方式转换它并使用 find。尝试将它附加到 dom 树,以便可以自然地解析它。尝试附加它。 $(..) 总是返回 jQuery 对象,因为 $ 是 jQuery 对象,而且 find 是扩展 $ 的空集合,它也将是对象

标签: javascript jquery ajax select http-post


【解决方案1】:

要使用选择器,您首先需要将该字符串作为 DOM 树的一部分。 $(data) 不这样做 自动地,您需要将其附加到元素(如主体)或替换现有元素。

onComplete: function(content) {
 content.find("#whatever"); // won't work
 $("#existingElement").html(content);
 $("#existingElement").find("#whatever"); // works
}

【讨论】:

  • 我知道。整个想法是直接从data 检索p
【解决方案2】:

只需在 PHP 中回显

alert(<?php echo $_POST['variable']; ?>);

【讨论】:

  • 我敢肯定他的最终意图是不要拥有变量alerted
  • 即使是,它也是一个 .js 文件,所以它不会被 PHP 解析。即使它是它也不会包含尚未通过我的 ajax 调用检索到的变量。
  • 哦,对不起科科斯先生。我只是想帮忙。如果我犯了错误,请原谅我。
  • 如果我的评论听起来有辱人格,我很抱歉,但您的回答没有经过深思熟虑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
  • 1970-01-01
  • 2013-05-22
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 2015-03-18
相关资源
最近更新 更多