使用ajax进行表单提交,页面上有php生成的多个表单

时间:2012-07-07 04:20:40

标签: php jquery ajax facebook-like

我有一个页面,其中有多个表单执行相同的操作,对于页面中的每个帖子充当like按钮,并在其旁边显示名为“likes”的div中的喜欢的数量。$ id,所以我可以在ajax调用之后识别写入喜欢计数的位置。我试图使用jQuery ajax函数,但我无法设置什么div来写函数的结果。

$.ajax({
  type:'POST', 
  url: 'likepost.php', 
  data:$('#like').serialize(), 
  success: function(response) {
    $('#like').find('#likediv').html(response);
  }
});

我如何访问likepost.php上的数据?我对javascript很糟糕,所以我希望有人可以帮助我并解释jQuery函数是如何工作的,因为我一直在复制和粘贴它而不知道我在做什么。

这会有用吗?

    $(function () {

    $("#likebutton").click(function () {

            var id = $('input[name=id]'); // this is me trying to get a form value

        $.ajax({
           type: "POST",
           url: "likepost.php",
           data: $("#like"+id).serialize(), // the form is called like+id e.g. like12
           success: function(data){

                 $("#likes"+id).html(data); // write results to e.g. <div id='likes12'>

               }
         });            
    });
});

我把它放在代码中,但是当点击按钮时,通常的帖子刷新页面就完成了。那是为什么?

3 个答案:

答案 0 :(得分:0)

制作迷你表单,序列化并发布它似乎是一件很重的事情,当你真正想做的就是将ID发送到likepost.php脚本。

为什么不直接检索ID并将其发布到脚本?

答案 1 :(得分:0)

首先让我们分解你的函数:Type是我们正在进行的请求的类型,你在这里指定了POST。这意味着在PHP文件中,您将使用$ _POST访问我们发送的数据。接下来是URL,它只是您发送数据的URL,在这种情况下是您的php文件。

之后是数据,即我们发送到url的数据(likepost.php)。你正在序列化任何ID为“喜欢”的东西并将其发送到php文件。最后,成功是一个在请求成功后运行的函数,我们从PHP获得响应并在函数中使用它来输出响应。

至于我推荐的多种表格,例如: http://www.kavoir.com/2009/01/php-checkbox-array-in-form-handling-multiple-checkbox-values-in-an-array.html

这里有关于我们谈论的内容的文档,如果你对jquery感到困惑只是将其分解并搜索每个部分。

http://api.jquery.com/serialize/

http://api.jquery.com/jQuery.ajax/

答案 2 :(得分:0)

你可以尝试:

function submitform(id) {
    var jqxhr = $.post('./likepost.php',$("#"+id).serialize(), function(data) {
        $("#"+id).find('#likediv').html(data);
    }, "json")
    return false;
}

形式:

<form method="post" id="likeForm" onsubmit="return submitform(this.id);">
    <input..... />
    <input type="submit" value="Submit" />
</form>

在likepost.php中添加第一行:

if ($_SERVER['HTTP_X_REQUESTED_WITH'] != "XMLHttpRequest") {
    header("location: " . $_SERVER['HTTP_REFERER']);
    exit();
}

你可以看到更多:http://api.jquery.com/serialize/ 为我工作。