我有一个 ajax 应用程序。它基本上将图像上传到一个文件夹,然后 PHP 抓取它们并将它们放入一个数组中。从那里它被 json_encoded 并通过 echo 发送回来。alert(responseText)
给我json版本。在我将一个变量设置为 后json.parse()
,console.log()
它作为一个数组出来很好。该数组看起来基本上是这样的:
1 IMAGE1.jpg
2 IMAGE2.jpg
3 IMAGE3.jpg
4 IMAGE4.jpg
5 IMAGE5.jpg
等等
我知道它现在位于 javascript/json 对象中。不幸的是,我找不到有关操纵此对象以获取所有图像名称和最后一个数组类型的任何信息,这是上传的真正成功或失败。任何人都可以向我指出一些文档或一种方法来操纵它并将信息外推到一个数组中。最后,我试图动态显示这些图像,但我假设通过上传它们并不都具有相同的名称。
所以我希望抓取所有 .jpg/.png./gif 等文件并抓取这些文件名,然后使用循环innerHTML
创建一堆具有正确文件名的标签。<img>
同样,处理数组中的最后一部分,它只是说明上传是否完全成功的文本。
我不应该使用 JSON 吗?我的代码如下。
PHP
$dirhandler = opendir(UPLOAD_DIR);
//create handler to directory
//read all the files from directory
$nofiles=0;
while ($file = readdir($dirhandler)) {
//if $file isn't this directory or its parent
//echo "FILE SYSTEM: " . $file . "<br/>";
//add to the $files array
if ($file != '.' && $file != '..') {
$nofiles++;
$files[$nofiles]=$file;
} //end of if loop
} //end of while loop
//json_encode($files);
if (!$success) {
$nofiles++;
$files[$nofiles] = "Unable to upload file";
exit;
} else {
$nofiles++;
$files[$nofiles] = "File Upload Successfully";
}
echo json_encode($files);
JAVASCRIPT
if (xhr.readyState === 4 && xhr.status === 200) {
progressBar.value="100";
progressText = "Upload Complete!";
progressStatus.innerHTML = progressText;
var imageNames = JSON.parse(xhr.responseText);
alert(imageNames);
} else if (xhr.readyState === 0 || xhr.readyState === 1) {
progressBar.value = "25";
progressText = "Starting Upload..";
progressStatus.innerHTML = progressText;
} else if (xhr.readyState === 2) {
progressBar.value = "50";
progressText = "Almost Done...";
progressStatus.innerHTML = progressText;
} else if (xhr.readyState === 3) {
progressBar.value = "75";
progressText = "So Close!";
progressStatus.innerHTML = progressText;
} else if (xhr.status === 404 || xhr.status === 500) {
alert("Your Upload Request failed.");
}