在显示之前修改ajax返回的数据

时间:2010-04-07 02:08:41

标签: jquery ajax forms

我正在使用jQuery / ajax处理订阅表单,并且需要显示带有成功函数的结果(根据数据库中是否存在电子邮件,它们会有所不同)。但诀窍是我不需要h2和第一个“p”标签。

如何只显示div#alertmsg和第二个“p”标签?

我尝试使用here描述的方法删除不必要的元素,但它不起作用。

这是我的代码:

var dataString = $('#subscribe').serialize();

$.ajax({
    type: "POST",
    url: "/templates/willrock/pommo/user/process.php",
    data: dataString,
    success: function(data){
    var result = $(data);
    $('#success').append(result);
}

以下是返回的数据:

<h2>Subscription Review</h2>

<p><a href="url" onClick="history.back(); return false;">
<img src="/templates/willrock/pommo/themes/shared/images/icons/back.png" alt="back icon"
     class="navimage" /> Back to Subscription Form</a></p>

<div id="alertmsg" class="error">

<ul>
<li>Email address already exists. Duplicates are not allowed.</li>
</ul>

</div>

<p><a href="login.php">Update your records</a></p>

1 个答案:

答案 0 :(得分:4)

您可以使用$()运算符的上下文部分,如下所示:

var dataString = $('#subscribe').serialize();

$.ajax({
    type: "POST",
    url: "/templates/willrock/pommo/user/process.php",
    data: dataString,
    success: function(data){
      var result = $(data);           
      $("h2, p:first", result).remove();
      $('#success').append(result);
    }
});

这将从响应中查找<h2>和第一个<p>,并在追加之前删除它们。默认上下文(要查看的元素)是document,因此当您调用$("h2")时,实际调用$("h2", document)(实际上正在调用{ {1}})...你也可以在那里放置一些非默认的东西,在这种情况下,就是响应。