私は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);
ジャバスクリプト
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.");
}