Jquery ajax没有取得成功,但不要抛出错误

时间:2014-03-28 00:59:37

标签: javascript jquery ajax opencart

我有一个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;没有做任何改变,它只是从复选框写入控制台的值,然后什么也没有。

3 个答案:

答案 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并修复它。