使用ajax响应刷新div

时间:2013-09-13 19:50:07

标签: javascript php jquery html ajax

所以我有一个带有表单的注释框(文本框和提交)。这会得到验证,然后通过ajax发送到php页面。

如果一切正常,则设置响应并继续页面。

但我希望div能够自我更新,以便您可以看到新的评论。

我不想要任何复杂的东西,比如追加等只是为了重新加载div(数据是从数据库中提取的)。

我过去曾经使用过它,但它不起作用:

 $('#divid').load('page.php #divid'),

任何想法如何转换这个:

        if (check == true) {
        $.ajax({
        type: "POST",
        url: "process/addcomment.php",
        data: $targetForm.serialize(),
        dataType: "json",
        success: function(response){

    if (response.databaseSuccess)
       $comment.after('<div class="error">Comment Added</div>');
    else
       $ckEditor.after('<div class="error">Something went wrong!</div>');

}
        });
    }
    return false;
});

});

成功响应后刷新div?

如果我尝试将另一个$ return添加到我的php中,例如

} catch (Exception $e) {
$return['databaseException'] = $e->getMessage();
}

$return['databaseSuccess'] = $dbSuccess;
$return['responseHtml'] = 'Post Updated';

echo json_encode($return);

javascript不起作用,我只是在打印返回的情况下加载php页面..

感谢。

4 个答案:

答案 0 :(得分:2)

如果你这样做

$("#divid").html( "Comment Added" )

它会在该div中设置html。

答案 1 :(得分:2)

我认为你这样做意味着

$('#divid').load('page.php');

签出jQuery .load文档

答案 2 :(得分:0)

首先,您需要在服务器端使用一些PHP代码来生成div的HTML。然后使用此JavaScript

if (check == true) {
  $.ajax({
    type: ...,
    url: ...,
    data: ...,
    dataType: "html"
  })
    .done(function(responseHtml) {
      $("#yourDiv").html(responseHtml);
    });
}

答案 3 :(得分:0)

我假设您在提交服务器(验证/卫生/等)后正在处理服务器上的评论。因此,我会将处理过的注释作为响应的一部分返回,然后将其插入HTML:

$.ajax({
    type: "POST",
    url: "process/addcomment.php",
    data: $targetForm.serialize(),
    dataType: "json",
    success: function(response){
        if (response.databaseSuccess) {
            // if you have a designated empty div already, you can use .html()
            $("#divid").html('<div class="success">'+response.commentText+'</div>');
            // if you want to append it to an already existing list of comments, you can use .append()
            $("#divid").append('<div class="success">'+response.commentText+'</div>');
        }
        else {
            $ckEditor.after('<div class="error">Something went wrong!</div>');
        }
    }
});

当然,这需要您将response.commentText添加到返回的JSON对象中。