2017-07-06 11 views
-2

私はLaravelプロジェクトでAjaxを使用していますが、2つのステータスエラーと成功を伴う関数を起動するボタンがあります。両方とも成功メッセージが返されます。Ajaxコールは成功イベントを発生させますが、201エラーを返します

コントローラー:フロントエンドで

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> 

私は何でも私ができる、インターネット上の多くの研究試してみました役に立たなかった。

+4

'201'エラーケースではありません。 –

+1

このように、201はエラーではなく、jQueryはそれをまだ「成功」として受け入れます。あなたのコードのコンテキストでは、403のFORBIDDEN、あるいはちょうど400のBAD REQUESTがより適切であるように思えます - あなたが '' error''よりも詳細な応答を与える限り –

答えて

5

201は、既存のHTTPコード応答であり、createdと完全な要求を意味します。だからAjaxにとっては成功です。スタンド(100-505)のうち異なる番号を使用してみてください。

https://httpstatuses.com/201

関連する問題