response.statusText = “OK” mais tombe en rappel d’erreur à partir d’ajax avec jQuery

Du côté serveur:

.... $_SESSION['accountId'] = $accountId; $_SESSION['type'] = $_POST['accountType']; echo '1'; return; 

Côté client:

 $.ajax( { type:'POST', data: $("#flowFormSubmit").serialize(), dataType:'text/plain', timeout:1000, success:function(response){ if(-1 == response) alert('fail'); else alert('succeed'); } }); 

J’ai testé que ça s’arrête juste au retour; Dans quelles conditions la fonction succès ne sera-t-elle pas appelée?

EDIT :

après l’ajout du rappel d’erreur, il est intercepté, mais n’a pas encore généré d’informations utiles:

 error:function(response){ alert(response);alert(response.statusText); }, 

Il ne produit que:

 [object XMLHttpRequest] OK 

Pourquoi tombe-t-il en erreur callback

Cela pourrait être une bonne idée de spécifier une option d’URL :

 $.ajax( { url:'foo.php', type:'POST', ... 

Il y a des parameters plus utiles au rappel d’erreur. Essayez d’obtenir le textStatus.

 error: function(XHR, textStatus, errorThrown) { console.log(textStatus); } 

Vérifiez ce que c’est.

Une dataType: 'text' rapide est que vous dataType: 'text' utiliser dataType: 'text' non 'text/plain' . ( Vérifiez la documentation )

 $.ajax({ type:'POST', data: $("#flowFormSubmit").serialize(), dataType:'text', timeout:1000, success:function(response){ if(-1 == response) alert('fail'); else alert('succeed'); } }); 

Essayez d’omettre l’instruction return du code côté serveur. En ce qui concerne votre rappel d’erreur, utilisez le code de rappel ajax générique suivant et indiquez-nous quelles sont les propriétés status, responseText et statusText en cas d’échec:

 function callback(response) { if (response.readyState == 4) { if (response.status == 200) { alert("Response Success:\n" + response.responseText); } else { alert("Response Error:\n" + response.statusText); } } } 

avez-vous oublié:

 header('Content-Type:text/plain'); 

sur le serveur?

1) allez à l’URL de votre navigateur (celui que vous cherchez avec ajax)

2) définissez le rappel d’erreur pour la demande jQuery ajax.

dans votre code php, utilisez json_encode pour retourner la réponse

par exemple:

 $response = array('success'=>1); echo json_encode($response); 

alors dans votre fonction de succès ajax il devrait être

 if (response.success == 1) { alert('success'); }