J'ai ce code http://jsfiddle.net/meridius/ysDGm/ où le problème est avec out.id
variable dans append
partie. Pour des raisons que je ne peux pas expliquer, cette variable est vide dans cette partie.variable globale est vide dans la fonction
Je pense que le problème est avec la portée de cette variable et j'ai tout essayé mais sans succès. S'il vous plaît noter, le problème n'est pas avec AJAX, ça fonctionne bien!
version est raccourcies ici de ce Fiddle:
<tr>
<td>one</td>
<td>
<select name="zadavatel">
<option value="0">-- vyberte --</option>
<option value="new">-- nový zadavatel --</option>
</select>
</td>
</tr>
var out = {};
$('select').bind("change", function() {
if ($(this).val() == "new") {
var nazev = prompt('Question',
$(this).parent().siblings(':first-child').text());
if (nazev == null) {
$(this).val($.data(this, 'current'));
return false;
} else {
var pole2 = {};
pole2["nazev"] = nazev;
$.ajax({
type : "POST",
cache : false,
url : "./pokus_zad.php",
data : JSON.stringify(pole2),
success : function(data) {
out = JSON.parse(data); //data.id
}
});
out.id = 15; // this work, but it SHOULD work without it (with AJAX)
$(this).closest('table').find('select').each(
function() {
$(this).append($('<option>', { "value" : out.id }).text(nazev));
});
$(this).closest('select').val(out.id).attr('selected', 'selected');
}
}
$.data(this, 'current', $(this).val());
});
Rechercher "retour jquery valeur ajax". Vous trouverez suffisamment de doublons. La cause est très simple: * la valeur de la variable [global] n'a pas été définie au point où elle est utilisée *. C'est tout. –
http://stackoverflow.com/questions/560307/how-do-i-edit-a-global-variable-in-a-jquery-each-function?rq=1, http://stackoverflow.com/questions/6917796/extjs-return-ajax-return-value, http://stackoverflow.com/questions/8532082/return-value-of-post-call, http://stackoverflow.com/questions/31129/how-can -i-return-a-variable-à partir d'une fonction-getjson? rq = 1, http://stackoverflow.com/questions/1632039/return-value-from-ajax-call, http://stackoverflow.com/questions/1181665/est-il-un-moyen-de-renvoyer-une-valeur-xml-dans-mon-cas-de-un-jquery-ajax-call? rq = 1 –
AJAX est asynchrone, donc flux de code continue pendant que l'appel ajax est en cours. Vous essayez d'utiliser votre variable 'out' avant qu'elle ne soit définie. Essayez de déplacer le code après votre appel ajax dans le rappel de succès – MrOBrian