Valeur de retour de $ .post () appel

J'ai une fonction jquery $ .post comme suit:

$.post('/test',json_data, function(data) { result=data }); 

Cette fonction est en fait utilisée dans une validation … Donc, la valeur de retour (données) contient true ou false. Mais cette valeur n'est pas stockée dans la variable «résultat». Je comprends que c'est parce que Post fait un appel asynchrone et qu'il n'attend pas la réponse. Ce que je veux demander, est-ce qu'il y a des solutions pour cela? Ou cet appel peut-il être synchronisé en quelque sorte?

Ceci est considéré comme une mauvaise pratique, mais il existe un paramètre async dans $.ajax() que vous pouvez définir sur false et attendre de manière synchrone un résultat:

 var result; $.ajax({ type: 'POST', url: '/test', data: json_data, async: false, success: function(data) { result=data; }, dataType: 'application/json' }); //result available here 

Un plus idiomatique, bien que légèrement moins pratique dans ce cas, serait de profiter des rappels:

 function validate(okCallback, errorCallback) { $.post('/test',json_data, function(data) { if(data) { okCallback(); } else { errorCallback(); } }); } validate( function() { //proceed }, function() { //display validation error } } 

Vérifier la validité dans le rappel

  $.post('/test',json_data, function(data) { var result=data; if(result === true) { // do some ok processing... } else { // do not ok processing... } });