.ajax JSONP parsererror
Je suis en train d'utiliser un appel ajax pour ramener les données à partir d'une api web. J'ai écrit 2 fonctions similaires, et ne travaillent pas. Je peux voir les données de revenir par le biais de Fiddler, mais il n'ira pas à la réussite d'appel, pour les deux fonctions ci-dessous. Ce que je fais mal? Les données proviennent de retour dans les deux fonctions dans un violon, ça ne va pas se le succès.
Voici tentative 1:
function PopulateDivisions()
{
$.support.cors=true;
$.ajax({
type:'GET',
url:'http://IP/Service/api/DivisionSearch/GetAllDivisions',
data: {},
contentType: 'application/json; charset=utf-8',
dataType: 'jsonp',
success: function(data) {
alert(data);
$("#divisionSelect").append($('<option></option>').val("-99").html("Select One"));
$.each(data, function(i, item){
$("#divisionSelect").append($('<option></option>').val(item.Name).html(item.Name));
});
},
error: function(xhrequest, ErrorText, thrownError) {
alert("Original: " + thrownError + " : " + ErrorText);
}
});
}
Erreur: jQuery19102671239298189216_1382022403977 n'a pas été appelé : erreur de l'analyseur de
Voici les données Fiddler est montrant retour:
[{"Id":1,"Description":"Executive","Name":"Executive "},{"Id":2,"Description":"ASD","Name":"Administrative Services Division "},{"Id":3,"Description":"COM","Name":"Communications "},{"Id":4,"Description":"CP","Name":"Contracts and Procurement "},{"Id":5,"Description":"PMD","Name":"Program Management Division "},{"Id":6,"Description":"RED","Name":"Research and Evaluation Division "},{"Id":7,"Description":"IT","Name":"Information Technology "}]
Voici tentative n ° 2:
function PopulateDivisions2()
{
$.support.cors=true;
$.ajax({
type:'GET',
url:'http://IP/Service/api/DivisionSearch/GetAllDivisionsJsonP',
data: {},
contentType: 'application/json; charset=utf-8',
dataType: 'jsonp',
jsonp: false,
jsonpCallback: "myJsonMethod",
success: function(data) {
//data = JSON.parse(data):
alert(data);
$("#divisionSelect").append($('<option></option>').val("-99").html("Select One"));
$.each(data, function(i, item){
$("#divisionSelect").append($('<option></option>').val(item.Name).html(item.Name));
});
},
error: function(xhrequest, ErrorText, thrownError) {
alert("PopulateDivisions2: " + thrownError + " : " + ErrorText);
}
});
}
Erreur: myJsonMethod n'a pas été appelé : parsererror
Voici les données Fiddler montre est de retour:
"myJsonMethod([{\"Id\":1,\"Description\":\"Executive\",\"Name\":\"Executive \"},{\"Id\":2,\"Description\":\"ASD\",\"Name\":\"Administrative Services Division \"},{\"Id\":3,\"Description\":\"COM\",\"Name\":\"Communications \"},{\"Id\":4,\"Description\":\"CP\",\"Name\":\"Contracts and Procurement \"},{\"Id\":5,\"Description\":\"PMD\",\"Name\":\"Program Management Division \"},{\"Id\":6,\"Description\":\"RED\",\"Name\":\"Research and Evaluation Division \"},{\"Id\":7,\"Description\":\"IT\",\"Name\":\"Information Technology \"}]);"
- recevez-vous json ou jsonp de votre demande ? Vous avez spécifié jsonp dans le code, mais le titre de la question dit "json", donc le problème est peut-être là...
- J'ai mis le type de données que jsonp. Json ne pas apporter quelque chose de nouveau, c'est la croix de domaine, de sorte jsonp travaillé. Je peux voir les données dans un violon, juste ne pouvez pas obtenir du succès dans l'appel ajax.
- Avez-vous jamais résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
contentType: 'application/json; charset=utf-8'
Indique au serveur que vous êtes en envoi de données JSON, mais vous n'avez pas toutes les données que vous envoyez. Essayez de laisser ce paramètre out.Si vous les sourcils à votre
url
dans le navigateur, vous obtenez json en arrière?Je ne sais pas si cela aurait de l'importance, mais je voudrais supprimer le
error
, car il est dit dans le Ajax jQuery documentation queThis handler is not called for cross-domain script and cross-domain JSONP requests
.Je voudrais essayer d'exécuter ce avec le moins de quantité de configuration comme ceci:
Voir si cela fonctionne et ensuite construire sur le dessus de cela. Sans jsfiddle il est difficile de déboguer ce qu'il se passe.
Voici un lien qui devrait être une bonne ressource pour vous: Exemple de base de l'aide .ajax() avec JSONP?
jsonp: false
doit entrer en jeu. Ne spécifiez pas unjsonpCallback
.Pouvez-vous essayer le code ci-dessus? J'ai enlevé le succès de rappel et de rappel inclus dans la chaîne de requête.