2015-08-19 13 views
6

Ho dichiarato success e error richiamate, ma in caso di codice di stato 200 chiama anche solo la richiamata di errore.AJAX: è stata emessa solo la richiamata di errore

Ho effettuato il ricciolo su un altro file php all'interno di registry.php.

Ecco quello che ho provato:

$.ajax({ 
    type: "POST" 
    ,data: { 
    action: "blah" 
    ,mobileNo: that.mobNo 
    ,token: that.key 
    } 
    ,url: "http://90.8.41.232/localhost/registry.php" 
    ,cache: false 
    ,dataType: "json" 
    ,success: function (response) { 
    console.log("success"); 
    } 
    ,error: function() { 
    console.log("error"); 
    } 
}); 

Ho letto nella documentazione che non abbiamo chiamare il successo richiamata esplicitamente, spero che sia corretta.

Qualsiasi idea su come chiamare la callback di successo quando è 200 codice di stato.

RISPOSTA sperare che questo aiuti, questo ho copiato dalla console di Chrome, non stampato da console.log().

bort: (statusText) 
always:() 
complete:() 
done:() 
error:() 
fail:() 
getAllResponseHeaders:() 
getResponseHeader: (key) 
overrideMimeType: (type) 
pipe:() 
progress:() 
promise: (obj) 
readyState: 4 
responseText: "{"success":"Mobile No 9535746622 is approved"}  {"report":true}" 
setRequestHeader: (name,value) 
state:() 
status: 200 
statusCode: (map) 
statusText: "OK" 
success:() 
then:() 
+2

Il tuo codice sembra corretto, la risposta dal server è valida? – aghidini

+0

Sei sicuro che 'http: // 90.8.41.232/localhost/registry.php' non è un accesso ai dati interdominio? se è quindi potrebbe essere necessario abilitare cors al registry.php fornendo intestazioni specifiche e inoltre è necessario controllare 'jsonp' per l'accesso ai dati del dominio incrociato. – Jai

+0

La funzione di errore richiede tre argomenti. Guardali, probabilmente ti diranno cosa c'è che non va. La console degli errori JavaScript potrebbe anche mostrarti degli errori. La scheda Rete degli strumenti di sviluppo ti consente di confermare se nella risposta hai ricevuto un codice di stato 200 OK, hai controllato? – Quentin

risposta

2

Come hai detto che si stanno facendo un curl chiamata a qualche altro php, quello che succede è ogni volta che fate Chiamata curl è necessario restituire la risposta di curl al client. Quindi, per trasferire il valore return della chiamata curl, è necessario impostare un'opzione curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);. Questo sistemerà il tuo problema. Lo spero.

+0

fantastico ... ha funzionato grazie – PJ1405

2

In primo luogo, checkout il vero errore che si ottiene (non certo realmente ottenete uno status 200?)

error: function (err) { 
    console.error("error"); 
    console.log(err); 
    console.log(err.stack); 
    throw err; 
} 

mostrarci il registro risultante per favore.

+0

ho aggiunto oggetto risposta, ci stato codice '200' n' ok'. – PJ1405

+0

Inserire console.log (err); È così che vedrai i dettagli dell'errore lanciato –

-2

ho fatto un paio di settimane fa e per me funziona se io lo chiamo come

$.ajax(
{ 
    type: "POST", 
    data: { action: "blah", mobileNo: that.mobNo, token: that.key }, 
    url: "http://90.8.41.232/localhost/registry.php", 
    cache: false, 
    dataType: json, 
}) 
.success (function (data, status, jqxhr) 
{ 
    // do your stuff 
}) 
.error (function(x, status, jqxhr) 
{ 
    // handle your errors 
}); 
Problemi correlati