Perché non è ansible modificare il valore all'interno della function Jquery $ .post (JavaScript)

Sto cercando di get la risposta da una chiamata ajax e salvarlo in un altro valore, ma non functionrà questo è il mio codice

x='go' $.post("someurl",function(data){ x=data; }) alert(x)//go 

o questa jsFiddle

Sto cercando una soluzione per questo problema senza memorizzare il valore in alcun contenitore HTML

$.post è asincrono – la richiamata verrà eseguita in seguito, dopo la linea di alert(x) .

Provare:

 $.post("someurl",function(data){ x=data; alert(x) }) 

(No, non c'è altro modo per questo – dovrai ristrutturare il tuo codice di conseguenza. Non essere tentato di provare ad impostare l' async in false , oppure finirà con problemi maggiori).

In Javascript quando si effettua questa chiamata ajax si invia una chiamata asynchronous al "someurl". Ciò significa che la tua function continua e x rimane indefinita.

soluzioni:

  $.post("someurl",function(data){ //use your data here }); 

o definire una function al di fuori

 var myFunction = function (data){ //do stuff with data } $.post("someurl",myFunction); 

perché prima dichiarare x come una string e quindi mettere i dati nello stesso x? Penso che dovresti usare json e avere il tuo file php analizzarlo in json prima di submit. Altrimenti solo non darà una risposta. Verrà verificato se ha eseguito la chiamata e che sarà sempre "vero" a prescindere dai successi.

Spero che questo ti aiuti.

BIEG