jquery ajax réussite résultat est null
Je fais un appel ajax à l'aide de jquery pour obtenir des données au format json. le succès fonction de rappel est appelée, mais les données sont vides.
$(document).ready(function () {
$.ajax({
url: "http://apps.sungardhe.com/StudentResearch/public/Research.svc/Schools",
type: "GET",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: cbSchools
});
});
function cbSchools(data) {
if (data == null) {
alert("data is null");
return;
}
for (var school in data) {
$("#ddSchool").append("<option value='" + data[school].ShortName + "'>" + data[school].ShortName + "</option>");
}
}
à l'aide de fiddler, je vois que la réponse est en fait de retourner les données json, mais pour une raison quelconque, le jquery objet résultat est null. quelqu'un peut me dire pourquoi?
OriginalL'auteur Rush Frisby | 2010-07-27
Vous devez vous connecter pour publier un commentaire.
Vous êtes bloqué par la de même la politique de l'origine qui empêche XMLHttpRequests entre les domaines. Puisque vous avez besoin de définir des en-têtes pour obtenir JSON arrière à partir d'une .Net web service comme cela, vous êtes dans une situation difficile, vous ne pouvez tout simplement pas faire ce genre de demande à partir d'un navigateur, et non pas à partir d'un domaine différent.
Fiddler peut-être avec le contenu, mais le navigateur ne va pas laisser la page à voir, pour des raisons de sécurité, il sera toujours null. La seule façon de contourner cela est JSONP, mais malheureusement il ne me semble pas que le service est installé à l'appui.
OriginalL'auteur Nick Craver
Je crois que vous pouvez faire vos appels générique (la raison comme marduk indique)
Pour gérer cela, et de faire des appels générique (fonctionne avec des données et des données.d), j'utilise la suite de mes appels ajax (avec mon asp.net trucs) pour qu'il fonctionne avec les anciens ainsi que les nouveaux services:
EDIT: SI c'est vraiment nul ET PAS "undefined" puis la croix de domaine en question pourrait être en jeu ici.
.d
. Lors de la prise en JSON, jQuery utilise$.parseJSON()
qui a déjà vérifie navigateur capacités (commeJSON.parse()
), et en contrôle la validité, etc, prendre un coup d'oeil vous-même ici: github.com/jquery/jquery/blob/master/src/core.js#L483OriginalL'auteur Mark Schultheiss
essayer cette
depuis votre retour de type de données est json, les données sont les données, "d", variable dans l'objet de réponse.
data
est null déjà, comment peut-il avoir une propriété? 🙂 Ce sera juste jeter une erreur sur leif()
déclaration elle-même.si vous essayez d'accéder aux données.d vous obtenez l'erreur javascript "données est nul"
OriginalL'auteur gehsekky