【发布时间】:2016-03-24 10:18:42
【问题描述】:
我知道这个问题已经被问过很多次了,但在我之前问过的人的问题略有不同。我有一个[上传照片的简单页面][1]。这个放在我的本地主机上。我可以选择文件并将图像上传到上传文件夹。我可以得到响应并使用 Firefox 控制台-“网络”选项卡-我可以看到响应-打印为 html 代码。我可以使用 JQuery $("#message").html() 函数获取 DOM。但是我想尝试的是这个。无需打印标签或 JSON 结构数据,只需发送错误代码。回声0;为了成功。回声-1;为失败。实时代码位于 [此处][2]。现在我尝试使用 php 文件 ajax_php_file.php 是这样的:
<?php
if(isset($_FILES["file"]["type"]))
{
$validextensions = array("jpeg", "jpg", "png");
$temporary = explode(".", $_FILES["file"]["name"]);
$file_extension = end($temporary);
if ((($_FILES["file"]["type"] == "image/png") ||
($_FILES["file"]["type"] == "image/jpg") ||
($_FILES["file"]["type"] == "image/jpeg")
) AND
$_FILES["file"]["size"] < 128000 AND // 125kb files can be uploaded.
in_array($file_extension, $validextensions)) {
if ($_FILES["file"]["error"] > 0)
echo '-1';
else
{
echo '-2';
if (file_exists("upload/" . $_FILES["file"]["name"])) {
echo '-3';
}
else
{
$sourcePath = $_FILES['file']['tmp_name']; // Storing source path of the file in a variable
$targetPath = "upload/".$_FILES['file']['name']; // Target path where file is to be stored
move_uploaded_file($sourcePath,$targetPath) ; // Moving Uploaded file
echo '0';
}
}
}
else
{
echo '-3';
}
}
?>
[1]: http://stackoverflow.com/questions/36183350/why-jquery-image-uploader-doesnt-upload-image
[2]: http://kod.djpw.cz/vpvb
所以没有 html 被发送,只有 1 或 2 个字符。当我在“网络”选项卡上检查 Firefox 控制台时,我只看到 JSON,仅此而已。所以我在这里有两个问题。为什么我没有看到响应,为什么文件上传成功后我没有看到“0”?然后 - 如何修复 JS 代码以在不使用任何标签的情况下获取数字或字符串。这可能吗?我的目标是启动函数,如果值为“0”,将打印报告“文件成功加载”,如果值小于 0,则打印一些错误消息。
【问题讨论】:
-
您不应该看到 JSON,该数据中没有 JSON。 (好吧,从技术上讲,数字是有效的 JSON 文本,但您没有任何代码来设置正确的内容类型,因此“网络”选项卡应该将其视为 HTML 而不是 JSON)
-
我问的不是 JSON,而是为什么没有可见的东西。但也许我检查错了并忽略了单个数字,因为现在我在响应控制台中看到值“0”。
标签: javascript php jquery html ajax