Croix de Domaine Ajax avec Ext.Ajax.demande
Il semble que je ne peux pas faire une croix domaine de l'appel ajax avec Ext.Ajax.demande. Il ressemble à ScriptTag: True n'a aucun effet.
Voici mon code:
{
xtype: 'button',
text: 'Search',
ui: 'confirm',
handler: function() {
var query = Ext.getCmp("textquery").getValue();
Ext.Ajax.request({
url: 'http://example.com/?search='+query,
dataType: 'jsonp',
jsonp: 'jsonp_callback',
scriptTag: true,
success: function(e) {
var obj = Ext.decode(e.responseText);
var msg = obj;
var html = tpl.apply(msg);
resultPanel.update(html);
}
});
}
Le journal de la console me dit:
XMLHttpRequest cannot load http://example.com/?search=test&_dc=1326551713063. Origin http://myapp.lo is not allowed by Access-Control-Allow-Origin.
Avec jquery, j'ai fait la même chose et ça marche, mais je dois utiliser sencha touch.
var formData = $("#callAjaxForm").serialize();
$.ajax({
url:"http://example.com/leksikonapi/",
dataType: 'jsonp',
jsonp: 'jsonp_callback',
data: formData,
success: onSuccess,
error: onError
});
Je ne peux pas voir ce qui est si différent entre les deux.
OriginalL'auteur Spoeken | 2012-01-14
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser Ext.util.JSONP. Je ne vois pas un moyen de le faire jsonp dans les docs à l'aide Ext.Ajax
Ext.util.JSONP.request({ url: 'http://dev.brafolk.no/leksikonapi/', callbackKey: 'jsonp_callback', params: { search: query }, callback: function(data) { console.log(data.results); var msg = data.results; var html = tpl.apply(msg); resultPanel.update(html); console.log('SUCCESS'); } });
OriginalL'auteur Jason Freitas
Solution pour le Sencha Touch 2: Utilisation de
Ext.data.JsonP
http://docs.sencha.com/touch/2-1/#!/api/Ext.les données.JsonP
OriginalL'auteur Martin Bories
oui, c'est vrai. Il est appelé le Même La Politique De L'Origine -- le navigateur ne va pas faire une demande pour n'importe quel domaine autre que celui d'où le javascript est venu. Si vous contrôlez le serveur, vous pouvez utiliser de la SCRO à dire au navigateur de faire des demandes. Si vous n'avez pas de contrôle sur le serveur, vous aurez à écrire un côté serveur proxy.
$.ajax({ url:"http://dev.brafolk.no/leksikonapi/", dataType: 'jsonp', jsonp: 'jsonp_callback', data: formData, success: onSuccess, error: onError });
Mais je wan pas à faire de même avec sencha touchOriginalL'auteur hvgotcodes
J'ai eu le même problème sur Chrome en raison de CORS (Cross-Origin Resource sharing)
Le navigateur va d'abord envoyer une demande d'OPTIONS,
alors vous attendre à obtenir de nouveau des en-têtes HTTP qui indiquent les origines sont autorisés.
J'ai résolu ce problème en faisant quelques réglages sur le côté serveur
Pour les deux Rubis et Node.js côté serveur, les deux fonctionne bien maintenant.
Node.js (Merci à l'essai)
Ruby (Grâce à la essai)
OriginalL'auteur pohchen