Ik wil jQuery ajax gebruiken om gegevens van een server op te halen.
Ik wil de succes callback functie definitie buiten het .ajax()
blok zetten zoals het volgende. Moet ik dan de variabele dataFromServer
als volgt declareren, zodat ik de geretourneerde data van de succes callback kan gebruiken?
Ik'heb gezien dat de meeste mensen de succes callback definiëren in het .ajax()
blok. Dus is de volgende code correct als ik de succes callback buiten het blok wil definiëren?
var dataFromServer; //declare the variable first
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData(dataFromServer)
})
}
function handleData(data) {
alert(data);
//do some stuff
}
Gewoon gebruiken:
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData
})
}
De succes
eigenschap vereist alleen een verwijzing naar een functie, en geeft de gegevens als parameter door aan deze functie.
Je kunt je handleData
functie op deze manier benaderen vanwege de manier waarop handleData
is gedeclareerd. JavaScript zal je code parsen op functie-declaraties voordat het wordt uitgevoerd, zodat je'de functie kunt gebruiken in code die'vóór de eigenlijke declaratie staat. Dit staat bekend als hoisting.
Dit geldt echter niet voor functies die op deze manier worden gedeclareerd:
var myfunction = function(){}
Die zijn alleen beschikbaar als de interpreter ze heeft doorgegeven.
Zie deze vraag voor meer informatie over de 2 manieren om functies te declareren
Probeer je succes handler te herschrijven naar:
success : handleData
De succes eigenschap van de ajax methode heeft alleen een verwijzing naar een functie nodig.
In je handleData functie kun je tot 3 parameters nemen:
object data
string textStatus
jqXHR jqXHR