gpt4 book ai didi

php - 使用 Codeigniter 处理 ajax 响应

转载 作者:行者123 更新时间:2023-12-01 06:28:08 25 4
gpt4 key购买 nike

我一直通过返回 json 编码数组作为响应来处理成功/错误消息,但我突然意识到这可能不是处理通知的正确方法。

例如,我的 Controller 将如下所示:

public function controller_name() {
//validate form input
$this->form_validation->set_rules('id', 'id', 'required|is_natural_no_zero');

// if validation was successful with no errors
if ($this->form_validation->run() && $this->model_name->method()) {

$this->data['status'] = 'success';
$this->data['message'] = 'This is the success message';
echo json_encode($this->data);

} else {
$this->data['status'] = 'error';
$this->data['message'] = validation_errors();
echo json_encode($this->data);
}
}

然后是 jQuery:

$.ajax({
url: url,
type: 'POST',
data: data,
success: function (r) {

json = $.parseJSON(r);

if (json.status == 'success') {
if (json.message == 'added') {
$this.addClass('success');
} else {
$this.removeClass('success');
}
} else {
console.log('There was an error')
}

执行此操作的最佳实践方法是什么?我可以抛出异常来使用ajax错误吗?

最佳答案

发送错误的 http 状态代码应该触发 jQuery ajax 错误处理程序:

public function controller_name() {
//validate form input
$this->form_validation->set_rules('id', 'id', 'required|is_natural_no_zero');

// if validation was successful with no errors
if ($this->form_validation->run() && $this->model_name->method()) {
$this->data['message'] = 'This is the success message';
} else {
$this->output->set_status_header('400'); //Triggers the jQuery error callback
$this->data['message'] = validation_errors();

}
echo json_encode($this->data);
}

JS:

$.ajax({
url: url,
type: 'POST',
data: data,
success: function (r) {
var json = $.parseJSON(r);

},

error: function( jqXhr ) {
if( jqXhr.status == 400 ) { //Validation error or other reason for Bad Request 400
var json = $.parseJSON( jqXhr.responseText );
}
}
});

关于php - 使用 Codeigniter 处理 ajax 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13389059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com