我有一个jQuery ajax请求,它没有抛出错误,但也没有达到success
。
它看起来像这样:
function delete() {
$("input[name='delete[]']:checked").each(function() {
console.log($(this).val());
$.ajax({
url: 'index.php?route=catalog/product/deleteIndexes&token=<?php echo $token; ?>&order_id=<?php echo $order_id; ?>',
type: 'post',
dataType: 'json',
async: false,
data: {
delete_approved: true,
delete: $(this).val()
},
success: function(json) {
if (json['error']) {
alert(json['error']);
}
if (json['success']) {
alert(json['success']);
}
},
error: function (jqXHR, exception) {
if (jqXHR.status === 0) {
alert('Not connect.\n Verify Network.');
} else if (jqXHR.status == 404) {
alert('Requested page not found. [404]');
} else if (jqXHR.status == 500) {
alert('Internal Server Error [500].');
} else if (exception === 'parsererror') {
alert('Requested JSON parse failed.');
} else if (exception === 'timeout') {
alert('Time out error.');
} else if (exception === 'abort') {
alert('Ajax request aborted.');
} else {
alert('Uncaught Error.\n' + jqXHR.responseText);
}
}
});
});
}
和接收数据的函数:
public function deleteIndexes() {
$this->language->load('catalog/product');
$json = array();
if (!$this->user->hasPermission('modify', 'catalog/product')) {
$json['error'] = $this->language->get('error_permission');
} elseif (($this->request->server['REQUEST_METHOD'] == 'POST') && isset($this->request->post['delete_approved'])) {
$this->load->model('catalog/product');
$delete = $this->model_catalog_product->deleteIndexes($this->request->post['delete']);
if ($delete) {
$json['success'] = $this->language->get('error_empty_delete');
} else {
$json['error'] = $this->language->get('error_empty_delete');
}
}
$this->response->setOutput(json_encode($json));
}
我错过了什么吗?它没有达到success
,也没有抛出错误。据我所知,它是一个或另一个。怎么可能没有达到?
我正在使用jQuery 1.8.16,并删除&#34; async:true&#34;没有做任何改变,它只是从复选框写入控制台的值,然后什么也没有。
答案 0 :(得分:1)
您使用的是什么版本的jquery?
自jquery 1.8起,Async: false
已被弃用。
使用chome dev工具或firefox firebug查看是否有从控制台返回的有用响应? 我相信如果没有成功或错误,那么这个电话根本就不会被解雇。
答案 1 :(得分:1)
尝试检查PHP从脚本中撤回的内容,我猜它没有返回任何内容。试着在没有支票的情况下警告Json,又名:
success: function(json) {
alert(json);
}
查看javascript在读取文件时是否没有返回错误,这也必须发生。
答案 2 :(得分:0)
出于某种原因,将delete_approved
切换为任何值都可以使其正常工作。我不知道为什么,因为我使用很多“批准”设置为true
并且从未遇到过问题,但这次我必须将值切换为1
并修复它。