[英]Ajax doesn't get a success response back after file upload
我刚开始使用 Ajax 并尝试为此找到解决方案。
这是问题所在:
我将 a.csv 上传到服务器。 这很好用。 但是在ajax调用上传“成功”后就没有响应了。 既不完整也不错误。 它什么也没显示。 甚至没有空警报。 根本不值一提。 我也没有在日志中找到任何东西。
当我在没有选择要上传的文件的情况下单击上传按钮时,我得到成功的响应...
这是代码:
上传.php
<?php
header('Content-type: application/json');
$target_dir = 'uploads/';
$target_file = $target_dir . basename($_FILES["file"]["name"]);
$response[] ='';
if(move_uploaded_file($_FILES["file"]["tmp_name"],$target_file))
{
//$response['message'] = "File was uploaded!";
$response['message'] = csvToJson($target_file);
}
else
{
$response['message'] = 'Sorry, there was an error uploading your file.';
}
echo json_encode($response);
function csvToJson($file)
{
// open csv file
if (!($fp = fopen($file, 'r'))) {
die("Can't open file...");
}
//read csv headers
$key = fgetcsv($fp,"1024",";");
// parse csv rows into array
$json = array();
while ($row = fgetcsv($fp,"1024",";")) {
$json[] = array_combine($key, $row);
}
// release file handle
fclose($fp);
// encode array to json
return $json;
}
?>
上传.js
$(document).ready(function(e)
{
// Submit form data via Ajax
$("#form").on('submit', function(e)
{
e.preventDefault();
var form_data = new FormData($(this)[0]);
$.ajax({
type: 'POST',
url: 'upload.php',
data: form_data,
contentType: false,
cache: false,
processData:false,
success: function(response)
{
//var json = $.parseJSON(response)
alert(response);
},
error: function(error){
console.log("Error:");
console.log(error);
},
complete: function(response){
alert(response);
}
});
});
});
index.php 中的表格
<form id=form enctype="multipart/form-data">
<input type="file" name="file" id="file">
<input type="submit" value="Upload Excel" name="submit">
</form>
最后我想要一个 json 返回上传文件的内容。 但是现在,如果文件已上传,则 output 为零。
感谢您的任何建议!
编辑解决方案:
问题完全不同。 我必须将 output 从 csvToJson 格式化为 UTF-8。之后我得到一个 json 作为响应。
Function 用于格式化为 UTF-8(从此处的另一篇文章中获取)
function utf8ize($d) {
if (is_array($d)) {
foreach ($d as $k => $v) {
$d[$k] = utf8ize($v);
}
} else if (is_string ($d)) {
return utf8_encode($d);
}
return $d;
}
解决方案,但无法标记:
问题完全不同。 我必须将 output 从 upload.php 中的 csvToJson() 格式化为 UTF-8。之后我得到一个 json 作为响应。
Function 用于格式化为 UTF-8(从此处的另一篇文章中获取)
function utf8ize($d) {
if (is_array($d)) {
foreach ($d as $k => $v) {
$d[$k] = utf8ize($v);
}
} else if (is_string ($d)) {
return utf8_encode($d);
}
return $d;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.