2016-07-20 39 views
3

Ajax経由でスライド(Jquery Ui Slider)の各スライダ値をマイコンに取得しています。Ajax Laravel return view 500エラー

スライダー+ Ajaxは次のようになります。

$("#sliderNumCh").slider({ 
     range: "min", 
     min: 0, 
     max: 20, 
     step: 1, 
     value: numbersOfChapters, 
     change : function(e, slider){ 
      $('#sliderAppendNumCh').empty(); 
      var sliderValue = slider.value; 
      var getSliderVal = document.getElementById('sliderValue').value = sliderValue; 
      var getPrId  = document.getElementById('editId').value; 

      $.ajaxSetup({ 
       headers: { 
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
       } 
      }); 
      $.ajax({ 
       type: 'post', 
       url: "{{ Route('editProductPost', $product->id) }}", 
       headers: { 
        'X-Requested-With': 'XMLHttpRequest' 
       }, 
       data: { 
        value: getSliderVal, 
        productId : getPrId 
       }, 
       success: function (option) { 
        console.log(getSliderVal); 
       } 
      }); 
     }, 
    }); 

このように私は私の頭の中でこれを持っているか:

Route::post('edit/{productID}', ['as' => 'editProductPost', 'uses' => '[email protected]']); 

とIn:

<meta name="csrf-token" content="{{ csrf_token() }}"> 

私のルートは、このようになります私のコントローラの方法私はこのように呼びます:

public function editProductPost(Request $request) 
{ 
    $sliderValue = $request->get('value'); 
    Log::info($sliderValue); 

    return view('productRom.edit', [ 
     'sliderValue' => $sliderValue 
    ]); 
} 

Log :: info($ sliderValue)は、各スライドで正しいスライダ値を取得したことを通知します。

私は戻って私の編集ビューに戻るしようとすると、私は、コンソールにこのエラーが表示されます。

POST http://localhost/myApp/public/product/edit/73 500(内部 サーバーエラー)

どのように私はこの問題を解決することができますか?

編集

私は、私の見解では、このラインを持っているので:

<form action="{{ route($route) }}"...> 

私はreturn文でこれを追加して、ルート変数が定義されていませんでした。

return view('productRom.edit', [ 
    'sliderValue' => $sliderValue, 
    'route' => 'editProductPost' 
]); 

エラーがなくなっているが、私はこのような$sliderValue変数にアクセスしようとすると:

<p>{{ isset($sliderValue) ? $sliderValue : "nothing" }}</p> 

それは私に

コントローラnothing

編集を出力します

public function editProductPost(Request $request) { return response()->json([ 'sliderValue' => $request->get('value') ]); } 

ビュー(アヤックス):

 $.ajaxSetup({ 
      headers: { 
       'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
      } 
     }); 
     $.ajax({ 
      type: 'post', 
      url: "{{ Route('editProductPost', $product->id) }}", 
      headers: { 
       'X-Requested-With': 'XMLHttpRequest' 
      }, 
      data: { 
       value: getSliderVal, 
       productId : getPrId 
      }, 
      success: function (response) { 
       // check it has some data 
       if (response.length) { 
        // spit it out 
        console.log(response); 
       } else { 
        console.log('nothing returned'); 
       } 
      } 
     }); 
+0

を、私は戻って私の編集に戻るしようとすると、」言いましたコンソールでこのエラーが表示されるビュー」投稿要求をクリックし、プレビューの下に何が表示されますか? – haakym

+0

@haakymオハイオ州私はそれが病気をすぐに編集すると思う – utdev

+0

1.あなたは私の最初のコメントで言ったことをしていない。私が私のチャットで先日言ったように... "あなたのeditProductメソッドはビューを返します。もしあなたがajaxのためにそれを使用していれば、ビューを返さず、jsonデータを返します" http://chat.stackoverflow.com/transcript/message/31766104#31766104 - はっきりしていることを望みます。 – haakym

答えて

1

お使いのコントローラのメソッドは次のようになります。editProductを探している:「

public function editProductPost(Request $request) 
{ 
    return response()->json([ 
     'sliderValue' => $request->get('value') 
    ]); 
} 

をあなたはshouldnビューをajaxリクエストに戻している。

あなたのAJAXの成功の方法は、(例えば)次のようになります。

// first arg is the data returned by the controller method 
success: function (response) { 
    console.log(response); 
} 

、それはこのようなものouputをする必要があります

{ 
    'sliderValue': 4 
} 
+1

動作しませんうーん、私は私の答えを編集し、私はそれを編集したか(まだ動作していない)あなたが知っているよう – utdev

+0

OK質問が編集されています – utdev

0

あなたのルートはeditProductPostとして命名されていますが、

+0

あなたの答えのおかげで、それはまだ – utdev

関連する問題