Come posso utilizzare Ajax per passare una variabile Javascript a Php e recuperarli?Laravel Utilizzo di AJAX per passare la variabile Javascript in PHP e recuperare quelli
Sto usando un cursore dell'interfaccia utente Jquery e su ogni diapositiva voglio passare il valore del cursore javascript a php, per così dire.
Non ho esperienza (non molto) in Ajax e apprezzo davvero l'aiuto.
Ecco come il mio cursore appare:
$("#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);
}
});
...
}
})
Il mio esempio percorso:
Modifica il mio percorso è simile al seguente ora:
Route::post('edit/{productID}', ['as' => 'editProductPost', 'uses' => '[email protected]']);
modifiche che cosa ho provato:
url: '{{ route("editProductWeb") }}',
e ottenuto questo errore:
POST http://localhost/myApp/public/product/edit/%7BproductID%7D 500 (Internal Server Error)
e provato questo:
url: 'edit',
e ottenuto questo errore:
POST http://localhost/myApp/public/product/edit 500 (Internal Server Error)
Modifica metodo mia modifica del controller:
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'
]);
}
Modifica utilizzando suggerimento haakym finora:
$.ajax({
type: 'post',
url: "{{ Route('editProduct', $product->id) }}",
headers: {'X-Requested-With': 'XMLHttpRequest'},
data: {
value: getSliderVal,
productId : getPrId
},
success: function (option) {
console.log(getSliderVal);
}
});
mi fa stampare l'id + il valore del cursore corrente nel mio di debug, in modo che funziona fino ad ora. Ora ho bisogno di ottenere quel valore e usarlo a mio avviso (php) qualche suggerimento su come procedere?
utilizzare questo nel mio metodo di controllo:
$sliderValue = $request->input('value');
mi restituisce
null
Edit Ho provato anche questo:
$sliderValue = Input::get('value');
che mi ha restituito anche
null
Edit ho aggiunto un registro:
Log::info(Input::all());
Questo dimostra il valore del cursore corretto e identificazione del prodotto sul vetrino. Ma il mio Input::get('value')
mi null
restituisce comunque Edit Penso che dovrei aggiungere queste informazioni:
ho cambiato le rotte a questo ora:
Route::get('edit/{productID}', ['as' => 'editProduct', 'uses' => '[email protected]']);
Route::post('edit/{productID}', ['as' => 'editProductPost', 'uses' => '[email protected]']);
Il get
mostra i dati dal database per un prodotto specifico e li mostra a mio avviso, ho aggiunto lo post
uno per inviare i dati slidervalue al metodo editProductPost
e restituisce in seguito il valore (sliderValue) nel vista edit, è questo corretto (Btw ancora non funziona)
EDIT
Se metto questo nel mio metodo di controllo:?
if ($request->isMethod('post')){
return response()->json(['response' => 'This is post method']);
}
return response()->json(['response' => 'This is get method']);
continuo a ricevere il seguente errore (se io scivolo):
POST http://localhost/myApp/public/product/edit/54 500 (Internal Server Error)
ho questo nella mia testa:
<meta name="csrf-token" content="{{ csrf_token() }}">
e mettere questo prima che il mio ajax postale:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
EDIT:
In questo modo si restituisce il valore corretto scorrimento corrente nei log:
Log::info($request->get('value'));
Ho provato questo :
return view('productRom.edit', [
'value' => $value,
]);
ma ottengo un errore nella console:
Failed to load resource: the server responded with a status of 500 (Internal Server Error) http://localhost/myApp/public/product/edit/73
Sembra buono da qui. Devi solo inserire l'URL del tuo controller/metodo nel tuo parametro $ .ajax 'url' e poi dovrebbe funzionare – Julqas
ty, quindi devo aggiungere 'edit' nel' url' I postet il percorso di cui sopra nel domanda – utdev
Puoi provare url: '/ edit', se non funziona prova l'URL completo :) – Julqas