Jquery ajax没有抓到404

时间:2018-03-21 09:12:02

标签: jquery ajax laravel get

我正在尝试使用AJAX来填充我的下拉列表,并且我从我的控制器返回404错误消息,并且Ajax没有捕获它......

我在控制器的回复是

return Response()->json(array('error' => '404 car type not found'), 404);

这是我的JS

$('document').ready(function () {
$('#car_type').bind('changed.bs.select', function () {
    $.ajax({
        type: 'POST',
        url:'carclass/'+$('#car_type').val(),
        dataType: 'json',
        error: function(XMLHttpRequest, textStatus, errorThrown){
            alert('status:' + XMLHttpRequest.status + ', status text: ' + XMLHttpRequest.statusText);
        },
        success: function( json ) {
           $.each(json, function(i, obj){
                $('#car_class').append($('<option>').text(obj.name).attr('value', obj.id));
           });
           $('#car_class').selectpicker('refresh');
        }
});
 });
 });

它正在返回

GET http://localhost:8000/ads/cartype/2 404 (Not Found)

2 个答案:

答案 0 :(得分:0)

error块替换为类似的内容,xhr.status将为您提供响应的状态代码。

error:function (xhr, ajaxOptions, thrownError){
    if(xhr.status==404) {
        alert('status:' + xhr.status + ', status text: ' + xhr.statusText);
    }
}

答案 1 :(得分:0)

请改用fail()。您还可以使用done()回调,这是success的替代。

$.ajax( "example.php" )
  .done(function(data) {
    $.each(data.responseJSON, function(i, obj) {
            $('#car_class').append($('<option>').text(obj.name).attr('value', obj.id));
    });
    $('#car_class').selectpicker('refresh');
  })
  .fail(function(data) {
    alert('status:' + this.status + ', status text: ' + this.statusText);
  })
  .always(function() {
    alert( "complete" );
  });