我正在尝试使用AJAX POST函数,但它以jQuery样式处理请求。我的意思是,它实际上并没有转到页面,而是让它转到页面。
$("#see_comments").click(function() {
$.post(
"comments.php",
{aid: imgnum},
function (data) {
}
);
});
此函数应转到comments.php页面,其中包含AID值。它发布得很好,但没有重定向到comments.php。
@Doug Neiner澄清:
imgnum
。这是我想要在comments.php中使用的imgnum
。我必须使用这个JavaScript,没有其他方法可以做到这一点。JavaScript是必需的,中发出的回应请求
发布于 2010-01-13 13:54:53
我知道你想做什么,但这不是你想要的。
首先,除非您要更改服务器上的数据,否则不要使用POST
请求。只要让#see_comments
成为一个普通的<a href='/comments.php?aid=1'>...
如果您必须使用POST
,则执行以下操作以使页面跟随您的调用:
$("#see_comments").click(function() {
$('<form action="comments.php" method="POST">' +
'<input type="hidden" name="aid" value="' + imgnum + '">' +
'</form>').submit();
});
这是如何实际工作的。
首先,$.post
只是一种AJAX方法,不能像您所描述的那样用于执行传统的form
提交。因此,为了能够post一个值并导航到新页面,我们需要模拟一个form
post。
因此,流程如下:
当您单击图像时,您的JS代码将获得某人单击的imgnum
#see_comments
form
,其中包含PHP值作为隐藏字段
comments.php
页面您的<
中它将是
发布于 2012-09-18 01:27:52
$("#see_comments").click(function () {
$('<form action="comments.php" method="POST"/>')
.append($('<input type="hidden" name="aid">').val(imgnum))
.appendTo($(document.body)) //it has to be added somewhere into the <body>
.submit();
});
发布于 2013-10-23 00:44:21
虽然Doug Neiner的解决方案不仅是正确的,而且是解释最全面的,但它有一个大问题:它似乎只适用于Chrome。
我犹豫了一段时间,试图确定一个解决办法,然后偶然发现了nopnop77的第二个答案。唯一的区别是额外的代码appendTo($(document.body))
。然后我在火狐中测试了它,它工作得很棒。显然,Firefox和IE需要在DOM主体的某个地方附加临时表单。
我不得不为一个Symfony2项目做这个实现,因为.twig
模板中的路径生成器只能使用GET
参数,而处理查询字符串破坏了应用程序的安全性。(顺便说一句,如果有人知道如何让.twig模板调用带有POST参数的页面,请在评论中告诉我)。
https://stackoverflow.com/questions/2054705
复制相似问题