Ajax avec JQuery: 200 ok, mais pas de “succès”
Je suis confronté à la même question, tout en essayant de la croix-demande de domaine. La Situation est étrange, mes données sont chargées, tandis que frapper l'url demandée directement sur navigateur, l'étrange, c'est qu'il obtient chargé si demandé l'aide de jquery ajax ainsi,
mais pas sur firebug console, mais sur firebug net onglet.
Console impressions:
L'échantillon de données d'erreur: parsererror {tandis que les données json est bien formé et formaté, vérifié sur json validateurs}
readyState: 4 status: 200 responseText: undefined
Net onglet charge toutes les données dans réponse et json sous-onglet
Mon exemple de code est:
function fetchJsonData() {
$.ajax({
type: 'POST',
url: 'http://www.meilleurmobile.com/comparateur/resultats-comparateur-json.do',
data: 'monthDur%5B0%5D=45.75&monthDur%5B1%5D=45.75&monthDur%5B2%5D=45.75&monthDur%5B3%5D=45.75&monthDur%5B4%5D=45.75&monthDur%5B5%5D=45.75&monthDur%5B6%5D=45.75&monthDur%5B7%5D=45.75&monthDur%5B8%5D=45.75&monthDur%5B9%5D=45.75&monthDur%5B10%5D=45.75&monthDur%5B11%5D=45.75&numSms=1000&dataVolume=1000&withoutMobile=-1&commitmentDuration=-1',
async: false,
cache: false,
//contentType: 'application/json; charset=utf-8',
crossDomain: true,
dataType: 'jsonp',
error: function( xhr,err ) {
console.log( 'Sample of error data:', err );
console.log("readyState: "+xhr.readyState+"\nstatus: "+xhr.status+"\nresponseText: "+xhr.responseText);
},
success: function( data ) {
if (console && console.log) {
console.log( 'Sample of data:', data.slice(0,100) );
}
}
})
.done(function() { alert("success"); })
.fail(function() { alert("error"); });
}
- Le service ne semblent pas soutenir JSONP, il renvoie juste JSON (exemple).
- JOSNP est pas de la magie. Cette URL n'a pas de retour JSONP.
- Si j'utilise JSON, la console dit 200 OK avec rouge d'échec, même en cas de succès. Plus important encore, il continue d'erreur de bloc, pas le succès. Lors de l'utilisation JSONP, console dit non à l'exploitation, mais Firebug Net de l'onglet indique les données chargées dans le bon objet JSON, qui ne reflète pas dans la Console.
Vous devez vous connecter pour publier un commentaire.
Tenté de la croix de domaine XMLHttpRequest les demandes peuvent vous tromper. Dans Firefox console web, il peut ressembler à des URL bien chargé, mais le corps est une chaîne vide.
Confirmer que le serveur prend en charge JsonP. Si vous ne savez pas vraiment ce que cela signifie, vous avez besoin de le chercher. Il est extrêmement important.
jQuery suppose que le JsonP paramètre va être "?rappel=". Si ce n'est pas vrai, vous devriez voir ceci: http://api.jquery.com/jQuery.ajax/
Si elle devient source de confusion, il peut être plus facile de le faire à l'ancienne et ajoute le script de la page vous-même avec un horodatage dans l'URL afin d'éviter à l'aide d'un script caché page.
BTW, autant que je sache, il n'existe aucun moyen de combiner JSONP et POST. JSONP est une méthode de travail autour de la même origine, la politique de sécurité de XMLHttpRequest. Il vous oblige à ajouter un script pour les DOM. Je ne pense pas que vous pouvez faire et également soumettre des variables POST dans le cadre du processus.
essayer avec
avec aucune tranches.
ou, encore mieux
avec JSON.stringify() (documenté ici) méthode vous obtenez une chaîne qui n'est pas analysé ou contrôlés pour json validité.
espère que cette aide.