使用jQuery .ajax调用REST API的自定义错误消息(简单文本)处理400错误(表单验证错误)的最佳方法是什么。我正在尝试使用响应数据返回验证消息。但是,如果我返回状态代码400,则.ajax使用错误函数。只有成功似乎能够轻松提取“响应”数据,其中包括我的“消息”。
REST API PHP CodeIgniter的片段:
$id = $this->contact_model->insert($put);
if (!empty($id))
{
$this->response(array('result' => true, 'id' => $id), 200);
}
else
{
$this->response(array('result' => false,
'message' => strip_tags(validation_errors())), 400);
}
jQuery .ajax代码片段:
$.ajax({
url: '<?php echo site_url('rest_api/contacts')."?format=json"; ?>',
type: "put",
data: $('#subpanel-contacts-add-form').serialize(),
success: function(response) {
if (response.result == true) {
// Add Relationship collection_contact_put
$.ajax({
url: '<?php echo site_url('rest_api/collections'); ?>/' + collection_id + '/contacts/' + response.id + '?format=json',
type: "put",
data: {},
success: function(relresponse) {
}
});
} else {
$("#subpanel-contacts-form-result").html('<div class="alert alert-error">Error: The Contact could not be saved! ' + response.message + '</div>');
}
},
error: function() {
$("#subpanel-contacts-form-result").html('<div class="alert alert-error">Error: There was an error while submitting!</div>');
}
});
我正在尝试使用'response'对象;参数消息和结果。我不确定是否有更好的方法来处理错误代码的响应。我应该使用.done .always和/或.fail。我应该根据返回的状态代码吗?
编辑:注意到我把PUT / POST混合了。
答案 0 :(得分:2)
在PHP中,您可以使用以下命令设置自定义状态代码/消息:
header("HTTP/1.1 $statusCode $message");
其中
客户端,您可以在ajax错误处理程序中获取这两个数据,如下所示:
error: function(jqXHR, textStatus, errorThrown) {
var HTTP_status = jqXHR.status;
var message = errorThrown;
...
}
jqXHR.responseText
也可能包含有意义的字符串(或json编码的数据),具体取决于服务器端发生的情况。
答案 1 :(得分:0)
我讨厌这种情况发生时。 30分钟后,我想我找到了一种在失败时输出响应消息的方法。我还不确定它是不是最好的方法。我很乐意在这个问题上听取其他人的意见。
error: function (jqXHR, textStatus, errorThrown) {
response = jQuery.parseJSON(jqXHR.responseText);
$("#subpanel-contacts-form-result").html('<div class="alert alert-error">Error: There was an error while submitting! ' + response.message + '</div>');
}