ajax响应错误无法按预期工作

时间:2013-12-22 10:05:44

标签: php jquery ajax

我的成功/错误处理未按预期工作。在这个例子中,我的php按预期运行,但是,处理的意图失败了。假设我在数据库中查找用户名...如果我找到了用户名,我将返回$ajax_result['success'] = 'success';,但如果我找不到用户名,我将不返回任何内容。成功调用工作正常,但错误调用未触发。

我得到的firebug中的错误是TypeError: response is null,因此我设置的错误警告不会触发。

在没有实际返回$ajax_result['success'] = 'whatever';

的情况下解决此问题的最佳方法是什么

当处理按预期进行时,从PHP返回的示例会是这样的:

$ajax_result['success'] = 'success'; // add success info
echo json_encode($ajax_result); // return result array to ajax

对于'错误'我只是回来了:

echo json_encode($ajax_result); // which is null in this case

ajax:

var showInfo = function() {
    $('#show-user').on('click', function () {
        var $form = $(this).closest('form');
        $.ajax({
            type: 'post',
            url: '/spc_admin/process/p_delete_user_show.php',
            data: $form.serialize(),
            dataType : 'json'
        }).done(function (response) {
            if (response.success == 'success') {            
                alert('success');              
            } 
            else 
            {
                alert('error');
            }
        });
    });

}

2 个答案:

答案 0 :(得分:1)

你不能json_encode一个空值,最简单,最干净的方法可能是让success成为一个布尔并将其设置为true或{{1}取决于它是否成功(这通常是大多数用户期望响应的'成功'或'结果'参数,而不是字符串)。

false

答案 1 :(得分:0)

试试这个:

  if (!response.success) {            
        alert('error');              
  } 
  else 
  {
        alert('success');
  }