【问题标题】:jquery post when done完成后的jQuery帖子
【发布时间】:2009-10-08 16:02:02
【问题描述】:

我有一个执行 jquery AJAX 帖子的脚本,然后应该重定向到不同的页面。问题是它有时会在帖子完成之前重定向。似乎有几个解决方案,但我无法让它们中的任何一个工作。谢谢你的帮助! 这是我的代码:

$.post("cart.php", { 'products[]':postvalues }, function(data) { });
location.href="index.php";

【问题讨论】:

    标签: jquery ajax post redirect


    【解决方案1】:

    您需要将location.href 放入回调函数中。

    $.post("cart.php", { 'products[]':postvalues }, function(data, status) {
        // if you don't want to redirect if it doesn't work, you can check if status == 'success'
        location.href = "index.php";
    });
    

    有关详细信息,请参阅jQuery.post 文档。

    尽管如此,我必须问:如果您仍然要重定向,为什么要通过 ajax 来做呢?

    您是否出于某种原因不想以正常方式简单地提交表单?如果没有,你可能应该改走那条路。

    【讨论】:

    • 这很简单,但是帖子是动态的,并且取决于用户选择的内容,如果用户选择某些项目,则会添加更多内容。它确实像一个复选框,但用图像代替。
    【解决方案2】:

    成功时在回调函数中进行重定向:

    $.post("cart.php", { 'products[]':postvalues }, function(data, textStatus) {
        if (textStatus == "success") {
            location.href="index.php";
        }
    });
    

    请参阅jQuery.post 了解其他状态以实现进一步的错误处理。

    【讨论】:

      【解决方案3】:

      您的问题是您的位置更改没有等待您的发布操作完成......因为发布使用 Ajax,它在发送请求后将控制权传递给下一行。

      要解决此问题,请执行以下操作:

      $.post("cart.php", { 'products[]':postvalues }, function(data) {
      // do stuff with data
      location.href="index.php";
       });
      

      【讨论】:

        【解决方案4】:

        如果你想去同一个页面你可以做window.location.reload(),如果你想滥用JS你可以使用加载到一个div,只加载内容

        【讨论】:

          猜你喜欢
          • 2014-10-19
          • 1970-01-01
          • 2019-03-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多