2011-08-09 17 views
0

我有一個jquery腳本,它從不同的站點收集數據,並通過ajax和php將其保存到sql數據庫中。目前該腳本單獨保存每個網站的收藏。我想改變它,以便腳本收集數組中的所有數據,並在完成收集時將數組傳遞給PHP文件,將其保存到數據庫中。每個語句之外的空數組jquery ajax json

我現在的問題是,我無法將「每個循環」之後的數組發送到ajax語句。如果我在「每個循環」中發送數組,它就會工作(此時我將數據保存在php文件的會話中,以便我可以看到它的結構並可以相應地調整pdo語句),但是然後我有一個在每個「循環」之後發佈請求。我想避免這種情況,以便在最後使用整個數組只有一個POST請求。但是如果我在「每個循環」之後使用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); 

//如果我在這裏使用了$就聲明,它的工作原理和正確的陣列被提交。但後來我有一個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; 

    }); 

你有任何想法,問題可能是什麼?如果您需要更多信息,請告訴我。 非常感謝! :)

回答

1

[編輯]笑我是個白癡,反正你的數組是空的原因是因爲GET請求是異步,你把你的最後一個數組之前可能不會完成。 要麼讓你的獲取,同步,(可能不是你想做的事情),要麼等待發送最後的數組,直到所有的獲取完成。

+0

你的例子基本上就像我的。我通過獲取$來更改變量dataArr。然後我得到一個「未定義」在螢火蟲,仍然是一個空陣列..我猜未定義出現,因爲我沒有取消$全球dataArr。 ..所以我仍然有同樣的問題。順便說一句:在你的例子中,每個循環都缺少..;)謝謝你的幫助! – Sebsemillia

+0

@sebsemilla你不希望它是全局的,只是在每個循環的範圍之外聲明。你不應該把它附加到jQuery對象。 – Andrew

+0

我改變了我的問題中的腳本,就像我現在根據你的建議改變它。但我仍然得到一個空陣列..也許你看到我忽略了一個錯誤..謝謝! – Sebsemillia