Mon besoin est de retourner des données en utilisant la fonction "SetUnit()" mais cette fonction contient des services AJAX asynchrones, donc j'utilise Différé suggéré dans ce lien (http://jsfiddle.net/b69ubLa0/21/). mais cela ne fonctionne pas sur mes besoins.La fonction AJAX ne fonctionne pas avec l'objet différé
code ......
Fonction
function SetUnit(query) {
var $q = new $.Deferred();
var oData = [];
var filter = JSON.stringify({ 'param': query });
$.ajax({
type: "POST",
url: '../WebService.asmx/ExecuteReader',
contentType: "application/json; charset=utf-8",
data: filter,
dataType: "json",
}).fail(function (jqXHR, textStatus, errorThrown) {
$q.reject(jqXHR, textStatus, errorThrown);
}).done(function (data, textStatus, jqXHR) {
return $q.resolve(data);
});
return $q.promise();
}
Appel Fonction 1
var oUNIT_NAME = SetUnit(query).done(function (data) { return data; });
Appel Fonction 2
var oUNIT_NAME = SetUnit(query);
fonction d'appel utilisant 2 style.
Et cette variable "oUNIT_NAME" est utilisée pour lier de nombreuses listes déroulantes.
Services Retour JSON OBJET
[{id:1,name:a},{id:1,name:a},{id:1,name:a},{id:1,name:a}]
Note: cela fonctionne si je suis ajouter (async: false) dans un cadre AJAX mais pas une bonne pratique et ce bloc mon interface utilisateur.
Vous avez enregistré avec succès une promesse dans la variable 'oUNIT_NAME', mais il semble que vous voulez' oUNIT_NAME' de tenir une valeur résolue, pas une promesse objet, correct? La solution consiste à définir 'oUNIT_NAME' dans le rappel' done'. Cela peut être une copie de [Comment renvoyer la réponse d'un appel asynchrone?] (Http://stackoverflow.com/q/14220321/710446) – apsillers
Cochez cette case pour plus de détails. Je mets à jour mon code mais ne fonctionne toujours pas. .. URL: https://github.com/mistic100/jQuery-QueryBuilder/issues/466. aidez s'il vous plaît. –
Votre exemple "Call Function 1" est-il exécuté? C'est à dire: si vous faites SetUnit (requête) .done (fonction (données) {alerte (données);}); 'est-ce que la valeur est alertée? Si c'est le cas, vous avez juste besoin de faire tout votre travail dans le rappel, ou dans une autre fonction appelée depuis le rappel. – apsillers