2013-06-13 45 views
1

我有一些麻煩從jquery腳本獲取文件名。使用serializearray從jquery對象返回文件名

我有一個包含在我的表單的FileInput文件名多隱藏字段,我用它來獲取文件名:

var fn = $('input[name="filename[]"]').serializeArray(); 
var post_var = {'filename':fn}; 

然後:

return JSON.stringify({ 
    "filename": post_var 
}); 

這給了我這樣的:

[Object { name="filename[]", value="703640495-qr-flo.png"}, Object { name="filename[]", value="703640495-qr-pgl.png"}] 

但我不知道我應該如何獲取「價值」與我目前的內容PHP腳本是這樣的:

foreach($filename as $key => $value) { 
    $imgrow = $this->db->dbh->prepare('INSERT INTO '. $this->config->db_prefix .'_images (aid, image) VALUES (:aid, :image)'); 
    $imgrow->bindValue(':aid', $id); 
    $imgrow->bindParam(':image', strtolower($value)); 
    $imgrow->execute(); 

}

,如果我的var_dump($文件名),我得到這樣的:

array(1) { 
    [0]=> 
    object(stdClass)#104 (1) { 
    ["filename"]=> 
    array(2) { 
     [0]=> 
     object(stdClass)#105 (2) { 
     ["name"]=> 
     string(10) "filename[]" 
     ["value"]=> 
     string(20) "703640495-qr-flo.png" 
     } 
     [1]=> 
     object(stdClass)#106 (2) { 
     ["name"]=> 
     string(10) "filename[]" 
     ["value"]=> 
     string(20) "703640495-qr-pgl.png" 
     } 
    } 
    } 
} 

SOLUTION:

foreach(array_shift($filename) as $file) { 
    foreach ($file as $key => $value) { 
     $imgrow = $this->db->dbh->prepare('INSERT INTO '. $this->config->db_prefix .'_images (aid, image) VALUES (:aid, :image)'); 
     $imgrow->bindValue(':aid', $id); 
     $imgrow->bindParam(':image', strtolower($value->value)); 
     $imgrow->execute(); 
    } 
} 

回答

1

你的文件位於$filename[0]['filename']讓您可以:

  1. 陣列轉移$filename變量返回位於$filename[0]['filename']陣列。
  2. 然後遍歷返回的數組,每個循環迭代將爲您提供一個包含名稱abnd值鍵的數組。

像這樣:

foreach(array_shift($filename) as $file) { 

    $file['name']; // the file name (always filename[] so ignore it) 
    $file['value']; //the file value (the real filename) 

} 
+0

甜!在我的問題中編輯過程中,我的加法順利運行!非常感謝! –

1

嘗試:

foreach($filename["filename"] as $key=>$value){ 

    $thisFilename=$filename["filename"][$key]["value"]; 

}