AJAX:如何从PHP返回错误

AJAX:如何从PHP返回错误,php,jquery,ajax,Php,Jquery,Ajax,我有一个表单供用户上传个人资料图片,并在不刷新的情况下向他们显示实时验证。我试图使用AJAX,但它似乎没有到达PHP文件。此外,即使我在提交表单后使用preventDefault,它也会重新加载页面并打开第一个没有表单的选项卡 表格 $avatar_form = '<div class="bhoechie-tab-content" id="uploadphoto">'; $avatar_form .= '<center>'; $avatar_form .= '<fo

我有一个表单供用户上传个人资料图片,并在不刷新的情况下向他们显示实时验证。我试图使用AJAX,但它似乎没有到达PHP文件。此外,即使我在提交表单后使用preventDefault,它也会重新加载页面并打开第一个没有表单的选项卡

表格

$avatar_form = '<div class="bhoechie-tab-content" id="uploadphoto">';
$avatar_form .= '<center>';
$avatar_form .= '<form id="avatar_form" method="post" enctype="multipart/form-data">';
$avatar_form .= '<h1>Change avatar</h1>';
$avatar_form .= '<input type="file" name="avatar" required>';
$avatar_form .= '<p><input type="submit" value="Upload"></p>';
$avatar_form .= '<p id="status"></p>';
$avatar_form .= '</form>';
$avatar_form .= '</center></div>';

我过去也做过类似的事情,作为已编写插件的一部分,处理图像数据和ajax的代码如下:

var form_data = new FormData();
form_data.append($(_file).attr('name'), _file.files[0]);
var _this = this;
$.ajax({
   type: "POST",
   url: <<URL>>,
   data: form_data,
   cache: false,
   contentType: false,
   processData: false
})
var form_data=new FormData();
form_data.append($(_file.attr('name'),_file.files[0]);
var_this=这个;
$.ajax({
类型:“POST”,
网址:,
数据:表格数据,
cache:false,
contentType:false,
processData:false
})
这将把在“文件”对话框中加载的映像提交到服务器,并使其采用$\u FILES superglobal的预期格式


还要记住,这只是插件的一个片段。

只需使用Jquery parseJSON函数和json编码:

保持此PHP代码原样:

$Stuff = 'Hello world';

$Success = true;
$Content = $Stuff;

$Response = array('Success' => $Success, 'Content' => $Content);
echo json_encode($Response);
对于JS:

$.ajax({  
    type: "GET",
    url: "../pgs/UpdateEditAStudent.php",
    data: "FirstName="+ $('#student_first_name').val(),

    success: function(data){
        // Here is the tip
        var data = $.parseJSON(data);

        alert(data.Content);
    }
});

@RoryMcCrossan抱歉,问题的措辞不正确,基本上我希望它向用户返回一个错误,例如,如果上传的文件格式不受支持,您是否检查了控制台?它说什么?
serialize()
不会上载文件。搜索如何使用ajax上传。此外,您正在请求json并返回文本,因此您的
成功
不会因为解析错误而触发。实现ajax错误handler@SablefosteConsolery
FormData
而不是
serialize()
中没有错误。其次,返回类型是JSON,而不是返回JSON对象。例如,您可以尝试
$result=“发生未知错误”;echo json_encode(array('result'=>$result);
然后在ajax成功中执行
$('#status').html(result.result);
$Stuff = 'Hello world';

$Success = true;
$Content = $Stuff;

$Response = array('Success' => $Success, 'Content' => $Content);
echo json_encode($Response);
$.ajax({  
    type: "GET",
    url: "../pgs/UpdateEditAStudent.php",
    data: "FirstName="+ $('#student_first_name').val(),

    success: function(data){
        // Here is the tip
        var data = $.parseJSON(data);

        alert(data.Content);
    }
});