Jak mogę użyć Ajaxa do przekazania zmiennej JavaScript do PHP i pobrania tych zmiennych?Laravel Użycie AJAX do przekazania zmiennej Javascript do PHP i odzyskanie tych
Używam suwaka Jquery Ui i na każdym slajdzie chcę przekazać wartość suwaka javascript do php, aby to powiedzieć.
Nie mam (niezbyt) doświadczenia w Ajaksie i naprawdę doceniam pomoc.
To jest jak moja suwak wygląda:
$("#sliderNumCh").slider({
range: "min",
min: 0,
max: 20,
step: 1,
value: numbersOfChapters,
change : function(e, slider){
$('#sliderAppendNumCh').empty();
var i = 0;
var sliderValue = slider.value;
var getSliderVal = document.getElementById('sliderValue').value = sliderValue;
$.ajax({
type: 'POST',
url: '',
headers: {'X-Requested-With': 'XMLHttpRequest'},
data: {
value: getSliderVal
},
success: function (option) {
console.log(getSliderVal);
}
});
...
}
})
Mój przykład trasa:
Edit moja droga wygląda to teraz:
Route::post('edit/{productID}', ['as' => 'editProductPost', 'uses' => '[email protected]']);
Edits co próbowałem:
url: '{{ route("editProductWeb") }}',
i dostał ten błąd:
POST http://localhost/myApp/public/product/edit/%7BproductID%7D 500 (Internal Server Error)
i próbowałem to:
url: 'edit',
i dostał ten błąd:
POST http://localhost/myApp/public/product/edit 500 (Internal Server Error)
Edit metoda mój kontroler edit:
public function editProduct($productRomID = 0)
{
$product = ProductRom::find($productID);
$sheets = Chapters::where('product_id', '=', $productID)->get();
$productId = $product->id;
$sheetCount = count($sheets);
return view('product.edit', [
'productId' => $productId,
'product' => $product,
'sheets' => $sheets,
'sheetCount' => $sheetCount,
'type' => 'edit',
'route' => 'updateProductRom'
]);
}
Edit użyciu haakym sugestię do tej pory:
$.ajax({
type: 'post',
url: "{{ Route('editProduct', $product->id) }}",
headers: {'X-Requested-With': 'XMLHttpRequest'},
data: {
value: getSliderVal,
productId : getPrId
},
success: function (option) {
console.log(getSliderVal);
}
});
zostanie wydrukowany mi id + aktualną wartość suwaka w moim debugowania, dzięki czemu działa do tej pory. Teraz muszę uzyskać tę wartość i użyć go w moim widoku (php) do jakiejkolwiek sugestii, jak postępować?
stosując tę metodę w moim kontrolera:
$sliderValue = $request->input('value');
zwraca mi
null
Edycja Próbowałem też tak:
$sliderValue = Input::get('value');
który również wrócił mi
null
Edit dodałem log:
Log::info(Input::all());
To pokazuje prawidłową wartość suwaka i identyfikator produktu na slajdzie. Ale moja Input::get('value')
nadal zwraca mi null
Edycja myślę I należy dodać następujące informacje:
zmieniłem moje trasy to teraz:
Route::get('edit/{productID}', ['as' => 'editProduct', 'uses' => '[email protected]']);
Route::post('edit/{productID}', ['as' => 'editProductPost', 'uses' => '[email protected]']);
get
przedstawia dane z bazy danych dla konkretnego produktu i pokazuje je moim zdaniem, dodałem post
jeden, aby opublikować dane slidervalue do metody editProductPost
i zwraca następnie wartość (sliderValue) w edit widzenia, jest to poprawne (Btw nadal nie działa)
EDIT
Jeśli mogę umieścić w moim metody kontrolera:
if ($request->isMethod('post')){
return response()->json(['response' => 'This is post method']);
}
return response()->json(['response' => 'This is get method']);
ciśgle następujący błąd (jeśli slajd):
POST http://localhost/myApp/public/product/edit/54 500 (Internal Server Error)
mam to w głowie:
<meta name="csrf-token" content="{{ csrf_token() }}">
i umieścić to przed moim ajax post:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
EDIT:
Robi to zwraca aktualny poprawną wartość suwak w dziennikach:
Log::info($request->get('value'));
Próbowałem to :
return view('productRom.edit', [
'value' => $value,
]);
Ale pojawia się błąd w konsoli:
Failed to load resource: the server responded with a status of 500 (Internal Server Error) http://localhost/myApp/public/product/edit/73
Wydaje się, że to dobrze. Musisz tylko umieścić adres URL swojego kontrolera/metody w parametrze "url" $ .ajax, a następnie powinien on zadziałać – Julqas
ty, więc muszę dodać 'edit' w' url', po którym podążam trasą powyżej w pytanie – utdev
Możesz spróbować adresu URL: '/ edit', jeśli nie działa, wypróbuj pełny adres URL :) – Julqas