Я использую Ajax в проекте Laravel, и у меня есть кнопка, которая запускает функцию с двумя ошибками состояния и успехом. но на обоих из них возвращается сообщение об успешном завершении.
контроллер:
if ($user->balance < $total_paid) {
return response()->json(['responseText' => 'error'], 201);
} else {
return response()->json(['responseText' => 'success!'], 200);
}
Функция Ajax в интерфейсе:
<script type="text/javascript">
function pay_with_ewallet() {
$.ajax({
url: "{!!URL::route('pay_with_ewallet')!!}",
type: "post",
data: {
'OrderShipAddress':$('input[name=OrderShipAddress]').val(),
'_token': $('input[name=_token]').val(),
'OrderEmail':$('input[name=OrderEmail]').val(),
'city_id':$('select[name=city_id] :selected').val(),
'OrderPhone':$('input[name=OrderPhone]').val(),
'shipping_cost': @if (isset( $shipping_total )) {{ $shipping_total }} @endif ,
'order_total':@if (isset( $final_total )) {{ $final_total }} @endif,
},
success: function(data) {
if (response == 'success')
$("#myElem").show();
setTimeout(function() { $("#myElem").hide(); }, 10000);
else
$("#myerror").show();
setTimeout(function() { $("#myerror").hide(); }, 10000);
}
});
}
</script>
и кнопка:
<button href="" class="btn btn-danger pull-right" id="pay_with_ewallet-btn {{ $user->id }}" data-id="{{ $user->id }}" onclick="pay_with_ewallet('pay_with_ewallet{{ $user->id }}')">{{ trans('interface.pay_with_e_wallet') }}</button>
Я пробовал все, что мог, и много исследований в Интернете, но был бесполезен.
201
- это существующий ответ HTTP-кода и средства, created
и выполненный запрос. Так что для Ajax это успех. Постарайтесь использовать разные цифры, из стандартных (100-505).
201
не является ошибкой.success
. В контексте вашего кода 403 ЗАПРЕЩЕНО, или даже просто 400 ПЛОХОГО ЗАПРОСА казались бы более подходящими - при условии, что вы дадите более наглядный ответ, чем'error'