我正在尝试使用jQuery POST函数,但它正在以AJAX样式处理请求。我的意思是它实际上并没有进入我要告诉它的页面。
$("#see_comments").click(function() {
$.post(
"comments.php",
{aid: imgnum},
function (data) {
}
);
});
此功能应该带有辅助值到 comments.php 页面。它发布正常但没有重定向到 comments.php 。
@Doug Neiner 澄清:
我有15个链接(图片)。我点击一个链接,然后加载我的JavaScript。脚本知道我打开的imgnum
。我希望在 comments.php 中使用此imgnum
。我必须使用这个JavaScript,没有其他方法可以做到这一点。 JavaScript是强制性的
您的方法成功发布辅助值。但是在 comments.php 中,当我尝试回显该值时,它什么也没显示。
我正在使用Firebug。在控制台中,它显示我在步骤(2)中成功完成的回显请求。
答案 0 :(得分:128)
我知道你要做什么,但它不是你想要的。
首先,除非您更改服务器上的数据,否则请勿使用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
提交。因此,为了能够发布值和导航到新页面,我们需要模拟form
帖子。
所以流程如下:
imgnum
#see_comments
form
,其中imgnum
值为隐藏字段comments.php
页面comments.php
页面可以访问已发布的变量(即在PHP中为$_POST['aid']
)答案 1 :(得分:46)
$("#see_comments").click(function () {
$('<form action="comments.php" method="POST"/>')
.append($('<input type="hidden" name="aid" value="' + imgnum + '">'))
.appendTo($(document.body)) //it has to be added somewhere into the <body>
.submit();
});
答案 2 :(得分:10)
虽然Doug Neiner的解决方案不仅是正确的,而且也是最全面解释的解决方案,但它有一个大问题:它似乎只适用于Chrome。
我坐立不安试图确定一种解决方法,然后偶然发现了nopnop77的第二个答案。唯一的区别是额外的代码appendTo($(document.body))
。然后我在 firefox 中测试了它,它就像一个魅力。显然,Firefox和IE需要将临时表单附加到DOM Body中的某个位置。
我必须为Symfony2项目执行此实现,因为.twig
模板中的路径生成器只能使用GET
参数并且弄乱查询字符串正在破坏对安全性的破坏。应用程序。 (顺便说一句,如果有人知道如何获取.twig模板来调用带有POST参数的页面,请在评论中告诉我。)
答案 3 :(得分:4)
我认为您要问的是访问'comments.php'并发布值为aid
的{{1}}。唯一的方法是使用表单提交此值。
但是,您可以隐藏此表单,并使用jquery在任意位置单击提交。
必要的html(放在页面的任何地方):
imgnum
必要:
<form id='see_comments_form' action='comments.php' action='POST'>
<input id='see_comments_aid' type='hidden' name='aid' value=''>
</form>
这将重定向到'comments.php'并发送正确的值$("#see_comments").click(function(){
$('#see_comments_aid').val(imgnum);
$('#see_comments_form').submit();
);
(我假设你是从其他地方获得的)。
答案 4 :(得分:0)
实际上,$.post()
会向服务器发送一些数据。除非您在处理POST请求的服务器端代码中执行此操作,否则它不会导致任何重定向。我可以提出两个解决方案:
<a href="comments.php?aid=1">Show Comments</a>
。$(location).attr("href", "comments.php?aid=1");
答案 5 :(得分:-1)
并没有完全解决问题。但确实设法解决它。我不得不对JS进行大量修改以使其工作,但这个问题的核心问题通过这样解决了:
$("#see_comments").attr({href: "comments.php?aid='"+imgnum+"'"});
这将辅助值附加到URL,因为@Doug Neiner最初建议我这样做。 非常感谢道格所做的一切努力。我真的很感激。 +1并接受你的答案。