2011-08-09 11 views
0

私はさまざまなサイトからデータを収集し、ajaxとphpを通してSQLデータベースに保存するjqueryスクリプトを持っています。現時点では、スクリプトは各コレクションをサイトから個別に保存します。私はそれを変更したいので、スクリプトは配列内のすべてのデータを収集し、収集が終了すると配列をPHPファイルに渡してデータベースに保存します。各ステートメントの外側に空の配列jquery ajax json

私の問題は今、「各ループ」の後に配列をajaxステートメントに送ることができないということです。私は "各ループ"の内部で配列を送信する場合(私はそれが構造を見ることができ、それに応じてpdoステートメントを適応させることができるように、PHPファイル上のセッションでデータを保存する瞬間に)動作します。各 "ループ"の後に投稿要求を送信します。私はそれを避けたいので、最後に配列全体でPOSTリクエストが1つしかありません。しかし、 "each loop"の後にajax postリクエストを使用すると、配列は空になります。私は配列をグローバルにして、各ステートメントの外側で使うことができると思ったが、何らかの理由でそれが機能しない。

問題の解決方法はありますか?

$('#ScanButton, .ScanButton').click(function() { 

var array = ["http://www.xyz.com/bla/bla/summary.html", 
      "http://www.xyz.com/blu/blu/summary.html", 
      ]; 

dataArray = []; 

$.each(array, function(n, val) { 


$.get(val, function(res) { //get the html source of this website 

    var data = { 

    } 

    dataArray.push(data); 

ここで$ .ajaxステートメントを使用すると、正しく動作し、正しい配列が送信されます。しかし、私はそれぞれのループでPOST要求を持っています。 });

});

//If I use the $.ajax here, the array I get is just empty. Any Idea how to solve this? 
data = YAHOO.lang.JSON.stringify(dataArray);  



    $.ajax({ 
    type:   'post', 
    cache:   false, 
    url:   'test.php', 
    data:   {myJson: data} 
    }); 

    return false; 

    }); 

問題の可能性はありますか?詳しい情報が必要な場合は、私に知らせてください。 ありがとうございます! GETリクエストが非同期あり、そしてあなたがあなたの最後の列を送信する前に、おそらく完了していないので:)

答えて

1

[編集]笑私は馬鹿だが、とにかく、あなたの配列がnullの理由があります。 取得、同期、(おそらく何かしたくない)、またはすべての取得が完了するまで、最終的な配列の送信を待つ。

+0

あなたの例は基本的に私のようです。私は$を取って変数dataArrを変更しました。しかし、私はFirebugで "未定義"を取得していますが、空の配列もあります。$を取り除くことによってdataArrをグローバルに作成しなかったため、未定義と思われます。 ..私はまだ同じ問題を抱えています。 btw:あなたの例では、それぞれのループが見つかりません..;)あなたの助けをありがとう! – Sebsemillia

+0

@sebsemillaグローバルにする必要はありません。各ループのスコープの外で宣言しただけです。これをjQueryオブジェクトにアタッチしてはいけません。 – Andrew

+0

私はあなたの推薦に従って今変更したように私の質問でスクリプトを変更しました..しかし、私はまだ空の配列を取得します..多分私は見逃したミスを参照してくださいありがとう! – Sebsemillia

関連する問題