2013-08-14 12 views
12

Io chiamo la funzione getResult() ogni volta che si chiama res.reply = 2, ma ci sono casi in cui lo res è vuoto. Quando il valore restituito è vuoto, viene invocato il numero console.log("error"). Funziona con le versioni precedenti di jQuery Mobile. Ora la versione è 1.3.2.jQuery chiamata ajax restituisce un errore vuoto se il contenuto è vuoto

function getResult() 
{ 
    request = $.ajax({ 
     type: "POST", 
     url: url, 
     dataType: "json", 
     data: { 
      .... 
     }, 
     error: function() {   
      console.log("error"); 
     }, 
     success: function(res) { 
      if(res.reply=='2') { 
       getResult(); 
      }   
     } 
    }); 
} 
+1

Aspettarsi aiuto con jQuery 1.3.2 è un po '... * ottimistico *. Perché non usi una versione corrente? – lonesomeday

+0

Colpire il gestore 'error' non significa necessariamente che la risposta sia vuota - più comunemente significa che una risposta non può essere recuperata a causa di un errore sul server. Controlla il traffico di rete in Firebug e i log del tuo server per un errore. –

+1

Che errore si sta ricevendo .. si può controllare con 'errore: function (xhr, err) { console.log (xhr); console.log (err); } ' – Pranav

risposta

23
dataType: "json" 

significa: dammi JSON, nient'altro. una stringa vuota non è JSON, quindi riceve una stringa vuota significa che non è stato un successo ...

request = $.ajax({ 
    type: "POST", 
    url: url, 
    data: { 
     .... 
    }, 
    error: function() {   
     console.log("error"); 
    }, 
    success: function(res) { 
     var response = jQuery.parseJSON(res); 
     if(typeof response == 'object'){ 
      if(response.reply == '2') { 
       getResult(); 
      } 
     } else { 
       //response is empty 
     } 
    } 
}); 
0

Sembra che normalmente si fa desiderare una risposta JSON, in modo da non modificare la dataType a " testo ", invece vorrei che il server restituisse una risposta JSON valida anche quando la risposta è vuota es "{}" invece di "".

Problemi correlati