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... } });