Javascript 非AJAX jQuery POST请求

Javascript 非AJAX jQuery POST请求,javascript,jquery,Javascript,Jquery,我试图使用jQuery POST函数,但它以AJAX风格处理请求。我的意思是它实际上并没有进入页面,我是在告诉它去 $("#see_comments").click(function() { $.post( "comments.php", {aid: imgnum}, function (data) { } ); }); 此函数应转到comments.php页面,并附带aid值。它可以发布,但不能重定向到co

我试图使用jQuery POST函数,但它以AJAX风格处理请求。我的意思是它实际上并没有进入页面,我是在告诉它去

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

        }
    );
});
此函数应转到comments.php页面,并附带aid值。它可以发布,但不能重定向到comments.php


@Doug Neiner澄清:

  • 我有15个链接(图片)。我点击一个链接,它就会加载我的JavaScript。脚本知道我打开了什么。这个
    imgnum
    我想放在comments.php中。我必须使用这个JavaScript,没有其他方法可以做到这一点。JavaScript是必需的

  • 您的方法已成功发布aid值。但是在comments.php中,当我尝试回显该值时,它没有显示任何内容

  • 我用的是萤火虫。在控制台中,它显示了我在步骤(2)中成功发出的回显请求


  • 我知道你想做什么,但那不是你想要的

    首先,除非您正在更改服务器上的数据,否则不要使用
    POST
    请求。只要让
    #查看_评论
    成为一个普通的

    如果必须使用
    POST
    ,则执行此操作以使页面跟随您的呼叫:

    $("#see_comments").click(function() {
      $('<form action="comments.php" method="POST">' + 
        '<input type="hidden" name="aid" value="' + imgnum + '">' +
        '</form>').submit();
    });
    
    $(“#参见_注释”)。单击(函数(){
    $('' + 
    '' +
    '')。提交();
    });
    
    这实际上是如何工作的。

    首先,
    $.post
    只是一种AJAX方法,不能像您描述的那样用于执行传统的
    表单
    提交。因此,为了能够发布一个值并导航到新页面,我们需要模拟
    表单
    post

    因此,流程如下所示:

  • 单击图像,JS代码将获得
    imgnum
  • 接下来,有人点击
    #查看评论
  • 我们创建一个临时
    表单
    ,其中
    imgnum
    值作为隐藏字段
  • 我们提交该表单,该表单发布值并加载
    comments.php
    页面
  • 您的
    comments.php
    页面将有权访问发布的变量(即,在php中,它将是
    $\u POST['aid']
  • 实际上,
    $.post()
    会向服务器发送一些数据。它不会导致任何重定向,除非您在处理POST请求的服务器端代码中这样做。我可以提出两个解决方案:

  • 要转到评论页面,而不是使用jQueryPost,只需使用“锚定”标记-
  • 或者,如果您想使用JQuery,可以使用以下代码段:
    $(location.attr(“href”,“comments.php?aid=1”)

  • 我想你要求的是访问“comments.php”并发布
    aid
    和value
    imgnum
    。唯一的方法是使用表单提交此值

    但是,您可以将此表单隐藏起来,并使用jquery在任意单击某个位置时提交它

    必要的html(放在页面的任意位置):


    这将重定向到“comments.php”,并发送正确的值
    imgnum
    (我假设您是从其他地方获得的)。

    没有完全解决问题。但还是设法解决了这个问题。我不得不对JS进行大量修改以使其正常工作,但这个问题的核心问题通过这样做得到了解决:

        $("#see_comments").attr({href: "comments.php?aid='"+imgnum+"'"});
    
    正如@Doug Neiner最初建议我做的那样,这将aid值附加到URL中。 多谢道格的努力。我真的很感激+1并接受您的努力回答。

    $(“#请参阅"注释”)。单击(函数(){
    
    $("#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();
    });
    
    $('') .append($('').val(imgnum)) .appendTo($(document.body))//必须将其添加到 .submit(); });
    虽然Doug Neiner的解决方案不仅正确,而且解释得最全面,但它有一个大问题:它似乎只在Chrome上起作用

    我焦躁不安了一会儿,试图确定一个解决办法,然后偶然发现了NOP77的第二个答案。唯一的区别是额外的代码
    appendTo($(document.body))
    。然后我在firefox中测试了它,它的效果非常好。显然,Firefox和IE需要在DOM主体的某个地方附加临时表单


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

    ?重定向?也许你可以再解释一下你想做什么。comments.php和请求文件在同一个文件夹中吗?这篇文章可能会对@metrobalderas有所帮助:我认为这很清楚@脉冲:是的。辅助值来自分贝。因此,我非常希望jquery能够正常工作。因为我也需要我的Javascript。@amit,在您发布的代码中,
    aid
    值不是来自发送到AJAX请求的数据库。你没有公布你的全部功能吗?@amit,那么你的问题就不清楚了。我的代码帖子将imgnum添加到
    comments.php
    文件中,同时重定向。你还想让它做什么?@amit,我并不反对你从哪里来的
    imgnum
    ,只是我的答案与你的代码完全相似,只是它与重定向不同。只要试着用
    $('form….submit();
    调用你的
    $。post
    ,看看它是否做不到你想要的。你应该将表单附加到DOM中,因为IE和Firefox会忽略提交,否则(如果你想添加更多非隐藏字段-例如文本输入-然后是.hide())在.appendTo()之前也需要调用,以避免在内容中出现任何跳跃)这应该合并到接受的答案中。如果DOM中没有表单,它将不会在Firefox和其他浏览器中提交。它会
        $("#see_comments").attr({href: "comments.php?aid='"+imgnum+"'"});
    
    $("#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();
    });