2011-03-02 73 views
1

首先,通過一個for循環用多重選擇(HTML5)輸入文件試圖輸出的JSON的鏈接時進入我上傳多張圖片,但是,這只是輸出一個圖像文件名,即使我選擇了2+圖像。問題與構建JSON結構

這是我如何創建JSON(的重要組成部分,而不是完整的腳本):

$count = 0; 
$image_count = count($_FILES['file']); 

for($i = 0; $i < $image_count; $i++) 
{ 
    $filename = random(13) . fileExt($_FILES['file']['name'][$i]); 

    move_uploaded_file($_FILES['file']['tmp_name'][$i], 'images/' . $filename); 

    $output = array(); 

    $output['url'] = 'http://www.mywebsite.com/images/' . $filename; 
    $output['name'] = $filename; 

    $count++; 
} 

if($count == $image_count) 
{ 
    echo json_encode($output); 
} 

最終輸出是這樣的:

{ 
    "url": "http://www.mywebsite.com/images/0Z9O3a9q1k2A8.jpg", 
    "name": "0Z9O3a9q1k2A8.jpg" 
} 

當它應該有多重這樣的上市圖片:

{ 
    "url": "http:\/\/www.mywebsite.com\/images\/0Z9O3a9q1k2A8.jpg", 
    "name": "0Z9O3a9q1k2A8.jpg" 
}, 
    { 
    "url": "http:\/\/www.mywebsite.com\/images\/3jn5jk5n4kj5n.jpg", 
    "name": "3jn5jk5n4kj5n.jpg" 
}, 
    { 
    "url": "http:\/\/www.mywebsite.com\/images\/nj23knk5k5455.jpg", 
    "name": "nj23knk5k5455.jpg" 
} 

如果我這樣做:

array_push($output, 'http://www.mywebsite.com/images/' . $filename); 
array_push($output, $filename); 

我得到的輸出是這樣的:

{ 
    "0": "http:\/\/www.mywebsite.com\/images\/0Z9O3a9q1k2A8.jpg", 
    "1": "0Z9O3a9q1k2A8.jpg", 
    "2": "http:\/\/www.mywebsite.com\/images\/3jn5jk5n4kj5n.jpg", 
    "3": "3jn5jk5n4kj5n.jpg", 
    "4": "http:\/\/www.mywebsite.com\/images\/nj23knk5k5455.jpg", 
    "5": "nj23knk5k5455.jpg", 
} 

我需要它是類似於什麼,我需要它,所以我可以用jQuery解析它。

回答

1

試試這個:

$output = array(); 
for($i = 0; $i < $image_count; $i++) 
{ 
    $filename = random(13) . fileExt($_FILES['file']['name'][$i]); 

    move_uploaded_file($_FILES['file']['tmp_name'][$i], 'images/' . $filename); 

    $output[] = array(
     'url' => 'http://www.mywebsite.com/images/' . $filename, 
     'name' => $filename 
    ); 

    $count++; 
} 

隨着$output[] = x您可以添加到陣列中的條目。輸出如下:

[ 
    { 
    "url": "http:\/\/www.mywebsite.com\/images\/0Z9O3a9q1k2A8.jpg", 
    "name": "0Z9O3a9q1k2A8.jpg" 
    }, 
    { 
    "url": "http:\/\/www.mywebsite.com\/images\/3jn5jk5n4kj5n.jpg", 
    "name": "3jn5jk5n4kj5n.jpg" 
    } 
] 
1

您需要有一個您正在使用的數組。因此,而不是這樣的:

$output = array(); 

$output['url'] = 'http://www.mywebsite.com/images/' . $filename; 
$output['name'] = $filename; 

你想是這樣的:

$output = array(); 

$output[]['url'] = 'http://www.mywebsite.com/images/' . $filename; 
$output[]['name'] = $filename; 

這將使你的輸出,然後可以參考你的jQuery爲:

success: function(response){ 
    response[0].name; 
    response[0].url; 
} 

這是否合理? jquery代碼非常簡短。