2014-03-05 53 views
0

我正在構造一個多維數組並試圖通過ajax與其他位數據發送它。多維數組未被POST POST

這裏是我的陣列是如何創建的:

var filelist = new Array; 

    $(this).find('input[name=filename]').each(function(index) { 
     var fileinfo = new Array; 
     fileinfo['src'] = $(this).data('src');   
     fileinfo['name'] = $(this).val(); 
     filelist.push(fileinfo); 
    }); 

如果我贊同這一點安慰,它看起來是正確的。

然後AJAX調用:

$.ajax({ 
     type: 'post', 
     url: 'my_url_here', 
     data: { id: id, files: filelist }, 
    }) 

使用Chrome檢查器,我可以看到沿着在表格數據部分傳遞的ID,但文件數組不是。

什麼給?

+2

filelist在什麼範圍?發佈更完整的代碼 – Rooster

+1

不知道它是否有所作爲,但爲什麼'fileinfo'是數組而不是對象? – Barmar

+0

嗯,我正在拿起PHP中的數據(CodeIgniter是精確的)。我會嘗試filelist作爲一個對象,但是這會解決問題嗎? –

回答

1

如果您向代碼和周圍的代碼添加更多上下文,它可能會有所幫助。

你使用的方式filelist不是數組。爲什麼不使用傳統的對象?

var filelist = []; 

$(this).find('input[name=filename]').each(function(index) { 
    var fileinfo = {}; 
    fileinfo.src = $(this).data('src');   
    fileinfo.name = $(this).val(); 
    filelist.push(fileinfo); 
}); 

你可以看到它在這裏工作: http://jsfiddle.net/TwoToneBytes/hMs3y/

但預期它不工作的原因是由於事實,你只需設置陣列上的srcname性能。當jQuery將數組轉換爲字符串時,它將只是一個空數組,因爲實際上並沒有添加任何數組。

var anArray = []; 
anArray['foo'] = 'bar'; 
anArray['bar'] = 'foo'; 


console.log(anArray.length); // == 0 due to array abuse 
console.log(JSON.stringify(anArray)); // returns [] because JSON.stringify is doing for(i<anArray.length) which is 0 
+0

這工作,但爲什麼?爲什麼沒有數組工作,爲什麼包含數組的對象失敗?只有一些對象工作...很奇怪! –

+0

這可能解釋它:http://jsfiddle.net/TwoToneBytes/K2pXw/1/。基本上,因爲你實際上沒有推動任何東西到數組它的長度不會更新。所以JSON.stringify返回一個空數組。 –

-1

JSON是優雅的方式做這類的事情:使用

e.g

Array 

( [1] => Array ( [product_id] => 1 [product_model] => HFJ5G1.5 [product_type] => plat [product_return] => graviteits

) 

[2] => Array 
    (
     [product_id] => 2 
     [product_model] => HHJ5S2.5 
     [product_type] => holle plunjer 
     [product_return] => veer  

    ) 
); 

這可以被編碼爲JSON

json_encode($array); 

的JSON的樣子:

{"1":{"product_id":"1","product_model":"HFJ5G1.5","product_type":"plat","product_return":"graviteits"},"2":{"product_id":"2","product_model":"HHJ5S2.5","product_type":"holle plunjer","product_return":"veer"}} 

的Json使生活更輕鬆發佈和處理在服務器端發佈的數據。