Javascript Jquery/php输出自定义错误消息

Javascript Jquery/php输出自定义错误消息,javascript,php,jquery,ajax,error-handling,Javascript,Php,Jquery,Ajax,Error Handling,我在表单的输入字段上有一个Ajax自动完成框。在jquery中,我有以下ajax设置 $.ajax({ type: "POST", url: myUrl, data: $("#id__form").serialize(), success: function(data){ alert("do something"); }, error: function (xhr, textStatus,

我在表单的输入字段上有一个Ajax自动完成框。在jquery中,我有以下ajax设置

 $.ajax({
    type: "POST",
    url: myUrl,
    data: $("#id__form").serialize(),
    success: function(data){
                  alert("do something");
              },
    error: function (xhr, textStatus, thrownError) { 
                  alert(xhr.status+ " "+ thrownError+ " " + textStatus);
              },
   dataType: "json"
    });
在服务器端,我有以下php代码

  $data = array('type' => 'error', 'message' => 'Error: '.$text);
    header('HTTP/1.1 400 Bad Request');
    header('Content-Type: application/json; charset=UTF-8');
    die(json_encode($data));
无论是成功还是出错,一切都很好。但是,我没有弄清楚如何从jquery访问我在php中定义为$text的文本

status是400,textStatus是“error”,thrownError是“Bad Request”,但没有我定义为$text的迹象


我缺少什么?

如果在文件中回显$text变量,则可以从javascript文件中找到它

php代码:

     echo $text;
更改为javascript:

    $.ajax({
     type: "POST",
    url: myUrl,
      data: $("#id__form").serialize(),
     success: function(data){

              //do something with the data returned from php file
              alert(data);//<---change to javascript code


          },
         error: function (xhr, textStatus, thrownError) { 
              alert(xhr.status+ " "+ thrownError+ " " + textStatus);
          },
       dataType: "json"
        });
$.ajax({
类型:“POST”,
url:myUrl,
数据:$(“#id_uform”).serialize(),
成功:功能(数据){
//对从php文件返回的数据执行一些操作

alert(data);//在ajax帖子中定义了json调用。在php后端定义了一个数组,因此可以通过键访问这些参数。数组:

<?php 
    $arr = array();
    $arr['message'] = 'What you like?';
    $arr['errorCode'] = '12345';

    die(json_encode($arr));
?>

明白了,多亏了这篇文章

问题是成功回调中的变量数据会自动处理json,但我必须在错误回调中对其进行解析。这是有效的:

error: function (xhr, ajaxOptions, thrownError) {
        var error = JSON.parse(xhr.responseText);
        alert(error.message);               
}

如果在php中使用“echo”,则无法将请求作为json发送。如果这样做,请在请求中使用数据类型:“”。谢谢,但如何从错误函数访问数据变量?我想我可以使用xhr.responseText,但这仍然无法按预期处理json数据
error: function (xhr, ajaxOptions, thrownError) {
        var error = JSON.parse(xhr.responseText);
        alert(error.message);               
}