2010-12-11 14 views
1
$("#Save").click(function() { 
    var lastForm = $(".frm_product_group").size() - 1; 
    $(".frm_product_group").each(function (index) { 
     $.post("save_new_product_group.php", $(this).serialize(), function (data) { 
      if (data == false) { 
       alert("Error: Try again"); 
      } 
     }); 
     if (index == lastForm) { 
      window.location.href = "product_group.php"; 
     } 
    }); 
}); 

上記のコードでは、ウィンドウはjquery.post(...)を付けずにproduct_group.phpにリダイレクトされます。 window.location ... lineの前にalert(...)を使用すると、jquery.post()の更新がうまく動作します。私はそれがjqueryの応答時間の問題だと思います。私はそれを並べ替えることができませんでした。jqueryを正しく呼び出せません。

助けてください。

答えて

1

を投稿していません。投稿が完了する前に場所を変更しています(リダイレクトしています)。

$("#Save").click(function() { 
    var numForms = $(".frm_product_group").length; 
    $(".frm_product_group").each(function() { 
     $.post("save_new_product_group.php", $(this).serialize(), function (data) { 
      if (data == false) { 
       alert("Error: Try again"); 
       return false; // Prevent more posts from being sent after error 
      } else { 
       numForms--; 
       if (numForms === 0) { 
        window.location.href = "product_group.php"; 
       } 
      } 
     }); 
    }); 
}); 
+0

@ box9:申し訳ありませんが、あなたの提案を働かせていません。 – Iqbal

+0

@Iqbal - 何が起こっていますか?ウィンドウは 'product_group.php'にリダイレクトされていますか?投稿のいずれかが通過していますか?私は1つの記事だけが通過していると思う。 –

+0

@Iqbal - 複数のフォームを扱う答えが更新されました。これは、サーバーの応答がどのような順序で戻ってくる可能性があり、window.location.hrefの変更を早期に開始できるためです。 –

0

あなたは、保存ボタンのでevent.preventDefaultコールを欠落している可能性がありますが、ポストのコールバックの内側の位置の変更を配置する必要があり、フォーム

$("#Save").click(function (e) { 
    e.preventDefault(); 
    var lastForm = $(".frm_product_group").size() - 1; 
+0

何もありません。保存ボタンはフォームを送信しません。すべてjqueryで制御しています。問題はajaxレスポンスにあるかもしれませんが、私は把握できません。 – Iqbal

+0

マークアップを投稿できますか? – Jaime

+0

e.preventDefault()は問題を解決しませんでした。 – Iqbal

0

私は別の日に同じ問題を抱えていましたが、それはあまりにも速く動作するjqueryの問題です。私の解決策は、setTimeOut()でリダイレクトへの呼び出しを遅らせることでした。 コードは次のようになります。

$("#Save").click(function() { 
     var lastForm = $(".frm_product_group").size() - 1; 
     $(".frm_product_group").each(function (index) { 
      $.post("save_new_product_group.php", $(this).serialize(), function (data) { 
       if (data == false) { 
        alert("Error: Try again"); 
       } 
      }); 
      if (index == lastForm) { 
       setTimeout("foo",1000); 

      } 
     }); 
    }); 

    function foo() 
    { 
     window.location.href = "product_group.php"; 
    } 
+0

私はbox9に同意します。遅れは解決策かもしれませんが、良い解決策ではありません。ありがとうuser537417 – Iqbal

関連する問題