非AJAX的jQuery POST请求

我正在尝试使用jquery POST函数,但它正在处理AJAX样式的请求。 我的意思是它并没有真正进入我要告诉它去的页面。

$("#see_comments").click(function() { $.post( "comments.php", {aid: imgnum}, function(data){ }); }); 

这个函数应该到达comments.php页面,并且附带帮助值。 它张贴罚款,但不redirect到comments.php。

@Doug Neiner澄清:
我有15个链接(图片)。 我点击一个链接,它加载我的JavaScript。 JS知道我开的wat imgnum。 这imgnum我想在comments.php。 我必须使用这个JavaScript,没有其​​他办法可以做的伎俩。 JS是强制性的。 2.你的方法成功发布辅助值。 但在comments.php中,当我尝试回显该值时,它什么也不显示。 我正在使用Firebug。 在控制台中,它显示了我在步骤(2)中所做的回应请求。

我知道你在做什么,但不是你想要的。

首先,除非您要更改服务器上的数据,否则不要使用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发布。

所以stream程如下:

  1. 你点击图片,你的JS代码获取imgnum
  2. 接下来,有人点击#see_comments
  3. 我们创build一个临时form其中的imgnum值作为隐藏字段
  4. 我们提交该表单,该表单发布该值加载comments.php页面
  5. 你的comments.php页面将能够访问发布的variables(即在PHP中它将是$_POST['aid']
 $("#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(); }); 

虽然Doug Neiner的解决scheme不但是正确的,而且也是最全面的解决scheme,但它有一个大问题:似乎只能在Chrome上运行。

我试图确定一个解决办法,然后偶然发现了一阵子,然后偶然发现了nopnop77的第二个答案。 唯一的区别是额外的代码appendTo($(document.body)) 。 然后我在Firefox中testing它,它像一个魅力工作。 显然,Firefox和IE需要在DOM Body的某处附加临时表单。

我不得不为Symfony2项目执行这个实现,因为.twig模板中的path生成器只能使用GET参数,并且混乱了查询string,从而破坏了应用程序的安全。 (顺便说一句,如果有人知道一种方式来获取.twig模板来调用POST参数的页面,请让我知道在评论中)。

我想你要问的是'comments.php',并发布aid与价值imgnum 。 唯一的方法就是用表单提交这个值。

不过,你可以隐藏这个表单,并用jquery在任何地方任意点击。

必要的HTML(放在页面上的任何地方):

 <form id='see_comments_form' action='comments.php' action='POST'> <input id='see_comments_aid' type='hidden' name='aid' value=''> </form> 

js必要:

 $("#see_comments").click(function(){ $('#see_comments_aid').val(imgnum); $('#see_comments_form').submit(); ); 

这将redirect到“comments.php”并发送适当的值imgnum (我假设你从其他地方得到)。

实际上, $.post()发送一些数据到服务器。 它不会导致任何redirect,除非您在处理POST请求的服务器端代码中执行此操作。 我可以build议两个解决scheme:

  1. 要转到评论页面,而不是使用JQuery发布,您可以简单地使用“锚点”标签 – <a href="comments.php?aid=1">Show Comments</a>
  2. 或者如果你想通过JQuery,你可以使用下面的代码片段: $(location).attr("href", "comments.php?aid=1");

并没有完全解决这个问题。 但确实设法解决它。 我不得不对JS做很多修改来完成这个工作,但是这个问题的核心问题是这样解决的:

  $("#see_comments").attr({href: "comments.php?aid='"+imgnum+"'"}); 

这附加援助价值的URL @Doug Neiner最初build议我做的。 非常感谢道格所做的一切努力。 我真的很感激。 +1并接受你的答案。