Javascript 未捕获的语法错误:意外标记<;控制台上的(匿名函数)
我正在创建一个上传文件应用程序。我使用AJAX和PHP编写了它 它在本地主机上运行良好,但当我将其上载到web服务器时。它返回错误: 未捕获的语法错误:意外标记 这是我的html表单 index.phpJavascript 未捕获的语法错误:意外标记<;控制台上的(匿名函数),javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我正在创建一个上传文件应用程序。我使用AJAX和PHP编写了它 它在本地主机上运行良好,但当我将其上载到web服务器时。它返回错误: 未捕获的语法错误:意外标记 这是我的html表单 index.php <?php header('Content-Type: application/JSON'); $uploaded = []; $allowed = ['jpg']; $succeeded = []; $failed = []; if (!empty($_FILES['fi
<?php
header('Content-Type: application/JSON');
$uploaded = [];
$allowed = ['jpg'];
$succeeded = [];
$failed = [];
if (!empty($_FILES['file'])) {
foreach ($_FILES['file']['name'] as $key => $name) {
if($_FILES['file']['error'][$key] === 0){
$temp = $_FILES['file']['tmp_name'][$key];
$ext = explode('.', $name);
$ext = strtolower(end($ext));
$file = md5_file($temp) . time() .'.'.$ext;
if (in_array($ext,$allowed) === true && move_uploaded_file($temp, "uploads/{$file}") === true) {
$succeeded [] = array('name' => $name, 'file' => $file);
# code...
}else{
$failed[] = array('name' => $name );
}
}else{
echo "Error";
}
}
}
if (!empty($_POST['ajax'])) {
echo json_encode(array(
'succeeded' => $succeeded,
'failed' =>$failed
));
}
?>
<form action="upload.php" method="post" enctype="multipart/form-data" id="upload" class="upload">
<fieldset>
<legend>Upload Files</legend>
<input type="file" id="file" name="file[]" required multiple>
<input type="button" id="submit" value="Upload">
</fieldset>
<div class="bar">
<span class="barfill" id="pb"><span class="barfilltext" id="pt">40%</span></span>
</div>
<div id="uploads" class="uploads">
</div>
<script type="text/javascript" src="upload.js"></script>
<script type="text/javascript">
document.getElementById('submit').addEventListener('click', function(e){
e.preventDefault();
var f = document.getElementById('file'),
pb = document.getElementById('pb'),
pt = document.getElementById('pt');
app.uploader({
files:f,
progressBar:pb,
progressText:pt,
processor: 'upload.php',
finished: function(data){
var uploads = document.getElementById('uploads'),
succeeded = document.createElement('div'),
failed = document.createElement('div'), anchor, span, x;
if (data.failed.length) {
failed.innerHTML = '<p>The following files failed to upload</p>'
}
uploads.innerText = '' ;
anchor = document.createElement('p');
anchor.innerText = "Upload Completed!";
anchor.target = '_blank';
succeeded.appendChild(anchor);
for(x=0;x<data.failed.length; x=x+1){
span = document.createElement('span');
span.innerText = data.failed[x].name;
failed.appendChild(span);
}
uploads.appendChild(succeeded);
uploads.appendChild(failed);
},
error: function (){
console.log("Error");
}
});
});
</script>
</form>
上传文件
40%
document.getElementById('submit')。addEventListener('click',函数(e){
e、 预防默认值();
var f=document.getElementById('file'),
pb=document.getElementById('pb'),
pt=document.getElementById('pt');
app.uploader({
档案:f,
进度条:pb,
正文:pt,
处理器:“upload.php”,
完成:函数(数据){
var uploads=document.getElementById('uploads'),
成功=document.createElement('div'),
失败=document.createElement('div'),锚点,span,x;
if(data.failed.length){
failed.innerHTML='以下文件上载失败'
}
uploads.innerText='';
anchor=document.createElement('p');
anchor.innerText=“上传完成!”;
anchor.target='u blank';
成功。追加子对象(锚);
对于(x=0;x您在upload.php中的代码末尾,在php结尾(?>
)之前,缺少一个}
:
使用浏览器的开发工具。查看Net选项卡。查看实际得到的响应。正如Quentin所说,错误源于解析器无法将返回的数据转换为有效的JSON。如果看不到确切的响应是什么,我们将无能为力,尽管考虑到hi,听起来您正在返回HTML。由于我无法发布图像,因此我上传了控制台日志的屏幕截图Your upload.php返回了一个错误,无法通过JSON.parse解析,请打开开发工具(chrome)中的网络选项卡,再次执行该操作以获取错误,然后在网络选项卡中单击upload.php,然后单击Response,您将看到upload.php返回的内容它指向upload.php的第3行。我不知道它出了什么问题。这一行
<?php
header('Content-Type: application/JSON');
$uploaded = [];
$allowed = ['jpg'];
$succeeded = [];
$failed = [];
if (!empty($_FILES['file'])) {
foreach ($_FILES['file']['name'] as $key => $name) {
if($_FILES['file']['error'][$key] === 0){
$temp = $_FILES['file']['tmp_name'][$key];
$ext = explode('.', $name);
$ext = strtolower(end($ext));
$file = md5_file($temp) . time() .'.'.$ext;
if (in_array($ext,$allowed) === true && move_uploaded_file($temp, "uploads/{$file}") === true) {
$succeeded [] = array('name' => $name, 'file' => $file);
# code...
}else{
$failed[] = array('name' => $name );
}
}else{
echo "Error";
}
}
}
if (!empty($_POST['ajax'])) {
echo json_encode(array(
'succeeded' => $succeeded,
'failed' =>$failed
));
}
?>
<form action="upload.php" method="post" enctype="multipart/form-data" id="upload" class="upload">
<fieldset>
<legend>Upload Files</legend>
<input type="file" id="file" name="file[]" required multiple>
<input type="button" id="submit" value="Upload">
</fieldset>
<div class="bar">
<span class="barfill" id="pb"><span class="barfilltext" id="pt">40%</span></span>
</div>
<div id="uploads" class="uploads">
</div>
<script type="text/javascript" src="upload.js"></script>
<script type="text/javascript">
document.getElementById('submit').addEventListener('click', function(e){
e.preventDefault();
var f = document.getElementById('file'),
pb = document.getElementById('pb'),
pt = document.getElementById('pt');
app.uploader({
files:f,
progressBar:pb,
progressText:pt,
processor: 'upload.php',
finished: function(data){
var uploads = document.getElementById('uploads'),
succeeded = document.createElement('div'),
failed = document.createElement('div'), anchor, span, x;
if (data.failed.length) {
failed.innerHTML = '<p>The following files failed to upload</p>'
}
uploads.innerText = '' ;
anchor = document.createElement('p');
anchor.innerText = "Upload Completed!";
anchor.target = '_blank';
succeeded.appendChild(anchor);
for(x=0;x<data.failed.length; x=x+1){
span = document.createElement('span');
span.innerText = data.failed[x].name;
failed.appendChild(span);
}
uploads.appendChild(succeeded);
uploads.appendChild(failed);
},
error: function (){
console.log("Error");
}
});
});
</script>
</form>
'failed' =>$failed
));
}
}
?>