Comment puis-je retourner une valeur d'une fonction de rappel à l'appelant?

Comment puis-je faire cette petite fonction "imageExists", si la requête ajax a réussi ou non?

function imageExists(path){ $.ajax({ url: path, type: 'HEAD', error: function(){ return false; }, success: function(){ return true; } }); } 

Je crois que vous devrez utiliser le mode synchrone et utiliser une variable séparée pour stocker la valeur de retour.

 function imageExists(path){ var isSuccess; $.ajax({ url: path, type: 'HEAD', async: false, error: function(){ isSuccess = false; return false; }, success: function(){ isSuccess = true; return true; } }); return isSuccess; } 

Vous allez retourner le résultat de l'appel AJAX soit dans la fonction de success , soit dans la fonction d' error , alors n'importe quelle fonction devrait être appelée à partir de ce point.

Parce qu'une demande AJAX est asynchrone (je conseillerais de ne pas en faire un appel synchrone de blocage), vous faites la demande, mais ne savez pas quand elle va revenir; Il vous appellera quand il sera retourné, alors il vous suffit de fournir quelque chose à appeler.

 function imageExists(path){ $.ajax({ url: path, type: 'HEAD', error: function(){ iveReturned(false); }, success: function(){ iveReturned(true); } }); } function iveReturned(result) { // code here to do something following AJAX response. } 

Créez un var pour maintenir la réponse au niveau global, puis définissez async sur false. Vous devez ensuite définir cette var dans la fonction de réussite ou d'erreur.

http://api.jquery.com/jQuery.ajax/

 function imageExists(path){ myVar = null; $.ajax({ url: path, type: 'HEAD', error: function(){ myVar = false; }, success: function(){ myVar = true; }, async: false }); }