非AJAX jquery POST请求

ami*_*mit 75 javascript jquery

我正在尝试使用jquery POST函数,但它正在以AJAX样式处理请求.我的意思是它实际上没有进入我要告诉它的页面.

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

        }
    );
});
Run Code Online (Sandbox Code Playgroud)

这个函数应该带有辅助值到comments.php页面.它的发布很好但没有重定向到comments.php.

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

Dou*_*ner 129

我知道你要做什么,但它不是你想要的.

首先,除非您要更改服务器上的数据,否则请勿使用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();
});
Run Code Online (Sandbox Code Playgroud)

这将如何实际工作.

首先$.post只有一个AJAX方法,不能用来做一个传统的form提交像你所描述.因此,为了能够发布值导航到新页面,我们需要模拟form帖子.

所以流程如下:

  1. 你点击图像,你的JS代码就可以了 imgnum
  2. 接下来,有人点击 #see_comments
  3. 我们创建一个临时formimgnum的隐藏字段中的IT价值
  4. 我们提交该表单,该表单发布值加载comments.php页面
  5. 您的comments.php页面将有权访问已发布的变量(即在PHP中它将是$_POST['aid'])

  • 你应该将表单附加到DOM,因为IE和Firefox会忽略提交(如果你想添加更多的非隐藏字段 - 例如文本输入 - 那么在.appendTo()之前也需要调用.hide()避免内容中的任何跳跃) (14认同)

dev*_*ide 47

$("#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();
});
Run Code Online (Sandbox Code Playgroud)

  • 这应该结合到接受的答案中.如果没有DOM中的表单,它将无法在Firefox和其他浏览器中提交. (4认同)

小智 10

虽然Doug Neiner的解决方案不仅是正确的,而且也是最全面解释的解决方案,但它有一个大问题:它似乎只适用于Chrome.

我坐立不安试图确定一个解决方法,然后偶然发现了nopnop77的第二个答案.唯一的区别是额外的代码appendTo($(document.body)).然后我在firefox中测试它,它就像一个魅力.显然,Firefox和IE需要将临时表单附加到DOM Body中的某个位置.

我必须为Symfony2项目执行此实现,因为.twig模板中的路径生成器只能使用GET参数并且弄乱查询字符串会破坏应用程序的安全性.(顺便说一句,如果有人知道如何获取.twig模板来调用带有POST参数的页面,请在评论中告诉我).

  • 这必须是评论,而不是答案,它仅提供更多信息和说明,不是提供的新答案。 (2认同)