0

我有一个问题,我不确定它在哪里,我有一个将数据发布到 php 文件并获取 HTML 输出的脚本,然后我想过滤它以仅使用页面的一部分。

我的脚本看起来像这样

var newsletter_form  = $(".newsletter_signup_form");
var newsletter_firstname  = $("#newsletter_firstname");
var newsletter_surname  = $("#newsletter_surname");
var newsletter_email  = $("#newsletter_email");

newsletter_form.submit(function(){
    $.post("news_signup.php", $(".newsletter_signup_form").serialize(), function( response ) {
        console.log(response);
        var newletter_messages = $( response ).filter( ".messages" );
        $( ".newsletter_messages" ).html( newletter_messages );
    }).done( function() { console.log( "DONE" ); } );
    return false;
});

我的 PHP 文件是这样的,它是基本的并且不使用任何 PHP 但我只是想获得响应(这也是我 console.log 时响应的样子)

<!doctype html>
<html lang="en">
 <head>
  <title>Document</title>
 </head>
 <body>
  <div class="newsletter_form">
   <form action="" class="newsletter_signup_form">
    <ul>
     <li>
      <input type="text" name="newsletter_firstname" id="newsletter_firstname" placeholder="First Name" />
     </li>
     <li>
      <input type="text" name="newsletter_surname" id="newsletter_surname" placeholder="Surname" />
     </li>
     <li>
      <input type="email" name="newsletter_email" id="newsletter_email" placeholder="Email Address" />
     </li>
     <li>
      <button name="join_btn">Join</button>
     </li>
    </ul>
   </form>
   <div class="messages">
    Something
   </div>
  </div>
 </body>
</html>

这是用于输出响应的 HTML

<div class="newsletter_messages">
      Loading....
</div>

所以我想从响应中获取“.messages”并用响应更新.“newsletter_messages”。

console.log 显示完整的 HTML 正在返回到 Javascript,但是当我过滤并尝试更新 HTML 时,它只是空白。

我觉得我没有正确使用 filter() 的 html() 方法。我还在学习 Jquery。另外,我还有另一个 post 方法,它只为不同的 for 做同样的事情,该方法与 filter() 和 html() 调用一起工作得很好。对于这个例子,我已经注释了所有其他 Jquery 代码,以防万一它弄乱了它,但仍然没有。

谁能发现它或指出我正确的方向?

非常感谢你的帮助

4

1 回答 1

1

您应该使用 jquery find() 函数而不是过滤器。过滤器将检查给定响应的选择器,它不会通过嵌套元素。

于 2013-10-22T12:17:24.417 回答