Puis-je faire un jQuery JSONP demande sans l'ajout d'un"?rappel=' paramètre dans l'URL?
Le serveur n'accepte pas tous les paramètres dans une URL de requête, donc j'ai besoin de supprimer les paramètres dans l'URL et bien sûr, je ne peux pas contrôler le serveur.
jQuery:
$.ajax({
type: 'GET',
url: 'http://cross-domain.com/the_jsonp_file,
jsonpCallback: 'jsonCallback',
contentType: 'application/json',
cache: 'true',
dataType: 'jsonp',
success: function(json) {
console.log(json);
},
});
Le JSONP fichier:
jsonCallback({"test": "hello"});
Quand j'ai envoyer une requête Ajax, l'URL ressemble à ceci:
http://cross-domain.com/the_jsonp_file?callback=jsonCallback
Mais j'ai besoin de cela (sans paramètres):
http://cross-domain.com/the_jsonp_file
EDIT:
Voici ma situation:
function MyClass(imgs) {
//imgs is array of URLs
this.imgs = imgs;
this.submit = function() {
//button click event triggers this method
this._show();
};
this._show = function() {
var _this = this;
for (var i = 0; i < _this.imgs.length; i++) {
(function($, j) {
$.ajax({
type: 'GET',
url: _this.imgs[j],
jsonp : false,
jsonpCallback: 'jsonCallback',
cache: 'true',
dataType:'jsonp',
success: function(json) {
console.log(_this.imgs[j]);
},
});
})(jQuery, i);
};
};
};
Et j'ai ce message d'erreur:
Uncaught TypeError: Property 'jsonCallback' of object [object Window] is not a function
Est étrange c'est que peu de demandes sont avec succès appelant jsonCallback.
Le serveur refuse les demandes avec les chaînes de requête tout à fait?
Vous pourriez être mieux de simplement écrire le JSONP code vous-même, plutôt que d'utiliser jQuery...
J'ai essayé
Je ne comprends pas comment vous vous attendez à faire JSONP, sans préciser la fonction de rappel. C'est une balise de script, la seule façon de passer le nom de la fonction de rappel est par le biais de l'URL. Ce qui me manque? Peut-être qu'il l'enveloppe dans un défaut de rappel? Quelle est l'URL?
Vous pourriez être mieux de simplement écrire le JSONP code vous-même, plutôt que d'utiliser jQuery...
J'ai essayé
dataType: 'script'
en ajax réglage et C'est faire de l'URL sans les paramètres mais je n'ai aucune idée de comment faire la fonction de callback de travail.Je ne comprends pas comment vous vous attendez à faire JSONP, sans préciser la fonction de rappel. C'est une balise de script, la seule façon de passer le nom de la fonction de rappel est par le biais de l'URL. Ce qui me manque? Peut-être qu'il l'enveloppe dans un défaut de rappel? Quelle est l'URL?
OriginalL'auteur Jonypoins | 2012-10-12
Vous devez vous connecter pour publier un commentaire.
Vérifier le jQuery docs - disent-ils-à-dire jsonp: faux et jsonpCallback : 'callbackFunction" dans l'ajax args....comme:
http://api.jquery.com/jQuery.ajax/
Uncaught TypeError: Property 'jsonCallback' of object [object Window] is not a function
. tho quelques éléments sont correctement appelle la fonction de rappel.Êtes-vous à l'aide de jQuery 1.5+?
J'utilise jQuery 1.8.2
C'est parce que vous n'avez pas défini une fonction nommée jsonCallback. La valeur de la jsonpCallback propriété doit être disponible dans le monde entier de la fonction à exécuter lorsque la réponse est renvoyée.
OriginalL'auteur Adam
Toutes les demandes d'appels du même rappel
jsonCallback
, donc j'ai pensé que le problème.Premier, du code Javascript dans le document:
Client télécharge JSONP fichier(juste un autre fichier Javascript) pour le serveur comme ceci:
Ajouté aléatoire chaîne hexadécimale après
jsonCallback_
pour séparer chaque demande comme jQuery par défaut de rappel.Lecture aléatoire chaîne hexadécimale de l'entrée et de la définir comme
jsonpCallback
:Merci @Adam @Kevin B @Dcullen et à tous! 😀
p.s: j'ai tapé toutes les sources ci-dessus par exemple, il ne peut pas corriger.
OriginalL'auteur Jonypoins
JSONP nécessite un rappel que la partie de l'URL. Je suppose d'après la description que le serveur auquel vous accédez ne prend pas en charge JSONP.
jQuery ajoute une balise de script à votre document, qui, une fois ajouté exécute la demande d'API, la réponse appelle la fonction de rappel dans votre code (c'est en simplifiant).
Vous pouvez prendre un coup d'oeil sur Wikipedia si vous voulez une description plus précise.
http://en.wikipedia.org/wiki/JSONP#How_it_works
Malheureusement, vous le serveur doit prendre en charge JSONP dans l'ordre pour que cela fonctionne. Sinon, vous obtenez l'erreur de script mentionné ci-dessus. Vous avez 2 options: 1. La configuration d'un proxy. 2. De la SCRO (ce qui nécessite la configuration du serveur aussi)
"Toutes les demandes d'appels du même rappel jsonCallback, alors j'ai pensé que c'est le problème." - c'était mon problème. merci. +1
OriginalL'auteur Dcullen