Javascript Jquery/php输出自定义错误消息
我在表单的输入字段上有一个Ajax自动完成框。在jquery中,我有以下ajax设置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({
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);
}