Eu quero usar jQuery ajax para recuperar dados de um servidor.
Eu quero colocar a definição da função callback de sucesso fora do bloco .ajax()
como o seguinte. Então eu preciso declarar a variável dataFromServer
como o seguinte para que eu possa utilizar os dados retornados da callback de sucesso?
I'já vi a maioria das pessoas definir o retorno de chamada de sucesso dentro do bloco .ajax()
. Então o seguinte código é correto se eu quiser definir o retorno de chamada de sucesso fora?
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
}
Basta usar:
function getData() {
$.ajax({
url : 'example.com',
type: 'GET',
success : handleData
})
}
A propriedade sucesso
requer apenas uma referência a uma função, e passa os dados como parâmetro para esta função.
Você pode acessar sua função handleData
assim por causa da forma como o handleData
é declarado. O JavaScript analisará seu código para declarações de função antes de executá-lo, assim você'poderá utilizar a função no código que's antes da declaração real. Isto é conhecido como hoisting.
Isto não't conta para funções declaradas assim, no entanto:
var myfunction = function(){}
Essas só estão disponíveis quando o intérprete as passou.
Veja esta pergunta para mais informações sobre as 2 formas de declaração de funções
Tente reescrever o seu manipulador de sucesso para:
success : handleData
A propriedade de sucesso do método ajax requer apenas uma referência a uma função.
Na sua função handleData você pode assumir até 3 parâmetros:
object data
string textStatus
jqXHR jqXHR