2017-03-26 7 views
1

私は助けが必要なロジックエラーが少しあります。コードは素晴らしい、私はどこに無限ループを停止するために私のフラグを設定するか分からない。jQueryは送信ループを停止するフラグを設定しました

私は最初にpreventDefaultフォームからデータをプルし、データを処理し、いくつかのデータを置き換えてからsubmitフォームを自分自身に新しいデータで置き換えるログインページがあります。問題は、フォームを送信すると、私の関数が始まり、無限ループに入るということです。私はフラグを設定する必要があることを知って、私はちょうどどこか分からない。ここに私の現在のコードは無限ループです。あなたはフラグを必要としないヘルプ

答えて

1

ため

var flag = false; 
$(function() { 
if(flag != true){ 
    $("form[action='account/login']").submit(function(event){ 
    event.preventDefault(); 
    custEmail = $("form[action='account/login'] input[type=email]").val(); 
     if(products.length != 0){ 
      $.ajax({ 
       url: "/apps/proxy/customer", 
       data: {custEmail, products}, 
       type: "GET", 
       dataType: "json", 
       complete: function(data) { 
       $("form[action='account/login'], input[name='checkout_url']").attr("value", data.responseText); 
       form = $("form[action='account/login']"); 
       var flag = true; 
       form.submit(); 
       }, 
      });   
     } 
    }); 
} 
}); 
} 

おかげで、あなたはネイティブ提出ハンドラをトリガする必要はなく、jQueryのはただ無限ループにあなたを投げ、決して思われる、ハンドラを提出しますフォームを提出してください。

$(function() { 
    $("form[action='account/login']").on('submit', function(event) { 
     event.preventDefault(); 

     var form  = this; 
     var custEmail = $("input[type=email]", form).val(); 

     if (products.length != 0) { 
      $.ajax({ 
       url: "/apps/proxy/customer", 
       data: { 
        custEmail, 
        products 
       }, 
       type: "GET", 
       dataType: "json" 
      }).done(function(data) { 
       $("input[name='checkout_url']", form).val(data.responseText); 
       form.submit(); 
      }); 
     } 
    }); 
}); 
0
ラインで

var flag = true

あなたは、このようにオリジナルのものを変更しない、(なぜなら 'VAR' キーワードの)変数flagを再宣言しています。その行をちょうど

flag = trueに変更する必要があります。

関連する問題