2016-07-20 14 views
3

Ich bekomme jeden Schieberegler Wert in Folie (Jquery Ui Slider) über Ajax zu meinem Controller.Ajax Laravel Rückansicht 500 Fehler

Der Slider + Ajax sieht wie folgt aus:

$("#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); 
       } 
      }); 
     }, 
    }); 

So habe ich dies in meinem Kopf:

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

Meine Route wie folgt aussieht:

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

Und in meine Controller-Methode nenne ich das so:

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

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

Log :: info ($ sliderValue) sagt mir, dass ich den richtigen Schieberegler Wert auf jeder Folie erhalten.

Wenn ich versuche, meine Bearbeitungsansicht zurückzukehren bekomme ich diesen Fehler in der Konsole:

POST http://localhost/myApp/public/product/edit/73 500 (Internal Server Error )

Wie kann ich dieses Problem lösen?

bearbeiten

Da ich diese Zeile aus meiner Sicht:

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

Die Route Variable nicht so definiert wurde, fügte ich in meiner return-Anweisung.

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

Der Fehler ist weg, aber wenn ich versuche, die $sliderValue Variable wie diese zuzugreifen:

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

druckt es mir nothing

bearbeiten

Controller:

public function editProductPost(Request $request) 
    { 

     return response()->json([ 
      'sliderValue' => $request->get('value') 
     ]); 
    } 

anzeigen (Ajax):

 $.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

Sie sagte: „Wenn ich versuche, meine bearbeiten zurückzukehren Ich erhalte diesen Fehler in der Konsole "versuchen Sie, auf die Anfrage zu klicken und was sehen Sie unter Vorschau? – haakym

+0

@haakym Ok Ich denke, ich habe es schlecht bearbeiten Sie die Frage schnell – utdev

+0

1. Sie haben nicht getan, was ich in meinem ersten Kommentar gesagt habe. 2. Wie ich in unserem Chat neulich gesagt habe "... gibt Ihre Methode editProduct eine Ansicht zurück, wenn Sie sie für AJAX verwenden, geben Sie keine Ansicht zurück, geben Sie JSON-Daten" http://chat.stackoverflow.com zurück/Abschrift/Nachricht/31766104 # 31766104 - hoffe, das ist klar. – haakym

Antwort

1

Ihre Controller-Methode sollte wie folgt aussehen:

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

Sie shouldn‘ t eine Sicht auf eine Ajax-Anfrage zurückgeben.

Ihre Ajax-Erfolg Methode wie folgt (zum Beispiel) aussehen sollte:

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

und es sollte wie folgt ouput:

{ 
    'sliderValue': 4 
} 
+1

Hmm Ich werde meine Antwort bearbeiten und Sie wissen lassen, wie ich es bearbeitet (immer noch nicht funktioniert) – utdev

+0

ok Frage ist bearbeitet – utdev

0

Ihre Route als editProductPost genannt wird, aber Sie suchen nach editProduct

+0

Vielen Dank für Ihre Antwort, aber es funktioniert immer noch nicht – utdev

Verwandte Themen