我有一个页面,其中有多个表单执行相同的操作,对于页面中的每个帖子充当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'>
}
});
});
});
我把它放在代码中,但是当点击按钮时,通常的帖子刷新页面就完成了。那是为什么?
答案 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感到困惑只是将其分解并搜索每个部分。
答案 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/
为我工作。