2016-10-05 19 views
1

フォームから一連の入力を繰り返し実行しようとしています。 foreach入力前の呼び出しが完了した後にのみ起動するajax呼び出しを起動したい。 こちらはStack answerです。テストのためのajaxはjavascript配列を使って繰り返しを呼び出します

$(function(){ 

var data = []; 

    $('input[type=text]').each(function(e,i){ 
      var val = $(this).val(); 
      data.push(val); 
    }); 

    current = 0; 
    function do_ajax() { 
      if (current < data.length) { 
        $.ajax({ 
          type:"POST", 
          data:"id="+data[current].value, 
          url:"tester.php", 
          success:function(result){ 
            $('#div').append(result); 
            current++; 
            do_ajax(); 
          } 
        }); 
      }; 
    } 
    do_ajax(); 
}); 

HTML

<input type='text' id='users[][name]' value='Bob'> 
    <input type='text' id='users[][name]' value='Frank'> 
    <input type='text' id='users[][name]' value='Tom'> 
    <input type='text' id='users[][name]' value='Joe'> 
    <input type='text' id='users[][name]' value='Bill'> 
    <input type='text' id='users[][name]' value='Gary'> 

<div id='done'></div> 
<div id='div'>DIV</div> 

tester.phpを、単純です:何

undefined 

echo $_POST['id']; 

私は何を除いてtester.phpをから返されますカント私はIDのためにデータseに配置する必要がありますajaxコールの呼び出し?

私が試してみました:

$('#div').append(result); 

へ:

$('#div').append(result.responseText); 
+0

は、なぜあなたはちょうどすべて送信しませんので、代わりにsuccessコールバックのcompleteを使用一度にデータ – adeneo

+0

これは私がやろうとしているもののストリップされたバージョンです。私は十分に私の質問を得るために投稿した。各ajax呼び出しは、前の呼び出しの結果をビルドします。 – bart2puck

+0

いいえ - > https://jsfiddle.net/89ggmrgn/2/ – adeneo

答えて

2

data[current].value; 

data[current].val; 

data[current].val(); 

EDIT ::::::

は、私も変更しなければならなかった受け入れられたソリューションを使用します

ありません。valueこれに

data:"id="+data[current].value 

:プロパティ、この変更

data:"id="+data[current] 

をしてもcompletesuccess後に実行し、errorコールバック

+0

アレイは「正しく」構築されていますか(インデックスを持たないコードは悪いですか)?私はindex:valueでそれを構築すべきですか?代わりにオブジェクトを使うべきですか? – bart2puck

+0

は実際に受諾を取り消す必要があります。 echo $ _POST ['id']の結果は0,1,2,3,4,5 – bart2puck

+0

です。開発者ツールの[ネットワーク]タブでは、どのフォームデータが送信されているかを確認できます。 – vher2

関連する問題