2013-06-12 43 views
0
[File 
    { size=295816, type="image/jpeg", name="img_new3.JPG"}, 
File { size=43457, type="image/jpeg", name="nature.jpg"} 
] 

這是我從腳本收到的數據,現在我必須通過ajax只發送大小和文件名到php文件。
這裏是我的代碼使用javascript將數據添加到多維數組中

  var files = []; 
      files["file"] = []; 

      // file is an object that has the above result 
      for(var i=0, j=file.length; i<j; i++){ 
       console.log(file[i].name); 
       files["file"][i] = file[i].name; 
       files["file"][i] = file[i].size; 
      } 

      // Send Request to Create ZIP File 
      console.log(files) 

我要訪問的params用於在我的PHP文件:

file(
    name=>array(
      0=>"name", 
      1=>"size" 
    ), 
    size=>array(...) 
) 

如何使這些數據發送到PHP文件中像上面的一個數組?

回答

1

首先,您必須使用Object表示法,而不是Array,然後您可以通過Ajax將它傳遞到您的PHP函數。

var files = {}; 
files["file"] = []; 

// file is an object that has the above result 
for (var i = 0, j = file.length; i < j; i++){ 
    console.log(file[i].name); 
    files["file"][i] = file[i].name; 
} 

,然後使用該數組JSON.stringify將數據傳遞給你的PHP腳本是這樣的:

$.ajax({ 
    url: "your url", 
    type: "POST", //can be get also, depends on request 
    cache: false, //do you want it to be cached or not? 
    data: {files: JSON.stringify(files)}, 
    success: function(data) { 
     //do something with returned data 
    } 
}); 

無論如何,我建議你改變你存儲數據的方式。對象在這種情況下是非常有用的:

var files = []; 

// file is an object that has the above result 
for (var i = 0, j = file.length; i < j; i++){ 
    console.log(file[i].name); 
    files.push({ 
     name: file[i].name //you can add all the keys you want 
    }); 
} 
0

你已經準備好js數組了,只需使用jQuery post method將創建的數組發送到php文件,然後按照你想要的方式處理數組。

0

你的多維數組可以JSON編碼並且發送作爲通過AJAX一個字符串PHP腳本,其可以在JSON解碼回的陣列/對象:

// assuming the array is in files var 
$.ajax({ 
    url : 'page.php', 
    type : 'POST', 
    data : { myFiles : JSON.stringify(files) }, 
    success : function(response){ 
     console.log("successfull"); 
    } 
}); 

在PHP端:

if($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
    $filesArray = json_decode($_POST['myFiles']); 
    print_r($filesArray); 
}