我正在尝试做一些非常简单的事情:
jQuery post - >这将从服务器返回一个字符串 - >警报字符串?
但是对于我的生活,我无法获得显示字符串的警报,我得到对象或警告,
我在这里做错了什么?
结果:
JSON.parse:JSON数据第1行第2列的意外字符
例外:循环对象
[object Object]
更新Php代码:
public function fileupload(){
$uniqueID = request('uniqueId');
if($uniqueID != ''){
echo 'Works'
}
else{
echo 'Failed'
}
}
更新了jQuery代码:alert位于最后一段代码
$(function () {
$('.fileupload').fileupload({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
maxFileSize: 3000000,
acceptFileTypes: /(\.|\/)(pdf|jpeg)$/i,
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
$('<p/>').text(file.name).appendTo(document.body);
});
},
// Required for Progress bar
progress: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$(this).closest("div").find("div.bar").css(
'width', progress + '%'
);
// update text in progress bar
$(this).closest("div").find("div.percentage").text(progress + '%');
}
// This is required for displaying errors
}).bind('fileuploadsubmit', function (e, data) {
data.formData = {
'uniqueId': $('.uniqueFileId').val()
};
}).on('fileuploadadd', function (e, data) {
data.context = $('<div/>').appendTo('#files');
$.each(data.files, function () {
var node = $('<p/>').append($('<span/>'));
node.appendTo(data.context);
});
// This is also required for displaying errors
}).on('fileuploadprocessalways', function (e, data) {
alert(data);
var index = data.index,
file = data.files[index],
node = $(data.context.children()[index]);
if (file.error) {
node.append($('<span style=\'color:red; \'"/>').text(file.name +' '+ file.error + ',file must be .pdf or .jpg'));
}
});
});
来自php的回复:
答案 0 :(得分:1)
您应该尝试以下更改:
$msg = 'Hello';
echo json_encode($msg);
如果在PHP函数中使用返回值,则返回有效。在您的情况下,您正在PHP和JavaScript中进行通信。 Ajax默认行为输出你在php中回显/打印的任何内容。
答案 1 :(得分:1)
您的问题是,您没有为您的信息指定密钥。
<强> PHP:强>
public function fileupload(){
$uniqueID = request('uniqueId');
if($uniqueID != ''){
echo json_encode(array("msg" => 'Works'));
}
else{
echo json_encode(array("msg" => 'Failed'));
}
}
<强> jQuery的:强>
$(function () {
$('.fileupload').fileupload({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
maxFileSize: 3000000,
acceptFileTypes: /(\.|\/)(pdf|jpeg)$/i,
dataType: 'json',
done: function (e, data) {
$.each(data.result.files, function (index, file) {
$('<p/>').text(file.name).appendTo(document.body);
});
},
// Required for Progress bar
progress: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$(this).closest("div").find("div.bar").css(
'width', progress + '%'
);
// update text in progress bar
$(this).closest("div").find("div.percentage").text(progress + '%');
}
// This is required for displaying errors
}).bind('fileuploadsubmit', function (e, data) {
data.formData = {
'uniqueId': $('.uniqueFileId').val()
};
}).on('fileuploadadd', function (e, data) {
data.context = $('<div/>').appendTo('#files');
$.each(data.files, function () {
var node = $('<p/>').append($('<span/>'));
node.appendTo(data.context);
});
// This is also required for displaying errors
}).on('fileuploadprocessalways', function (e, data) {
console.log(data);
alert(JSON.parse(data));
var index = data.index,
file = data.files[index],
node = $(data.context.children()[index]);
if (file.error) {
node.append($('<span style=\'color:red; \'"/>').text(file.name +' '+ file.error + ',file must be .pdf or .jpg'));
}
});
});
<强>的变化:强>
1)PHP代码返回有效的JSON,否则js会将其视为有效负载。 2)解析返回对象,你将在警告方法中拥有该JSON对象。
希望这个统计数据成为您的问题。
答案 2 :(得分:0)
根据文档,传递给fileuploadprocessalways
处理程序的数据对象不包含来自服务器上传处理程序的ajax响应。
相反它包含
两个数组:
文件 - 包含所应用过程的结果。
originalFiles - 原始上传的文件。
https://github.com/blueimp/jQuery-File-Upload/wiki/Options#processing-callback-options
也许您打算为done
回调编写处理程序。
https://github.com/blueimp/jQuery-File-Upload/wiki/Basic-plugin