2010-04-20 11 views
2

Dans mon extension chrome que j'appelle ceci:perplexes sur appel jquery à l'intérieur extension chrome

jsonPost = { 
    email:"[email protected]", 
    password:"demo", 
    content: $('#selected_text').val(), 
    notification_type: $('#notification_type').val(), 
    name:$('#notification_name').val() 
} 

$.post('http://localhost:3000/api/create.json', jsonPost, 
     function (data) { 
      console.log("type of data = " + typeof(data)); 
      console.log("data in function = " + data); 
      } 

Les données permet au serveur. Mais la réponse est perdue, dans la console --- type de données = chaîne --- données en fonction =

Donc, pour une raison que je ne suis pas en revenir la réponse. Fonctionne à partir du navigateur. J'ai même essayé de me battre contre cnn.com et je n'ai pas eu de réponse.

des idées?

grâce

+2

Je crois que les extensions sont soumises à la [politique de même origine] (http://en.wikipedia.org/wiki/Same_origin_policy) dans ce contexte, je pourrais me tromper cependant. Facile à tester, lancez simplement chrome avec 'chrome.exe --disable-web-security' et voyez si cela fonctionne. –

Répondre

1

Êtes-vous confronté à des restrictions de script intersite? Si cela fonctionne dans une page sur "localhost", mais pas dans l'extension, il est probable que vous deviez demander à Google Chrome l'autorisation d'accéder à des éléments en dehors du contexte de sécurité par défaut de l'extension. Voyez si le conseil de Google sur requesting cross-origin permissions for an extension aide.

+0

ce n'était pas le, "json" (que j'avais essayé). C'était un problème d'autorisations. Dans le manifest.json je l'ai mis et cela a fonctionné: "permissions": ["tabs", "http: // * /"], En fait, je voulais http: // localhost: 3000/là, mais que n'a pas l'air de marcher. Mais c'est juste mon test env donc je ne m'en soucie pas vraiment pour le moment ... –

1

vous devez utiliser JSON comme le type de poste, pour la méthode abrégée, l'utiliser comme ceci

$.post(url, data, function(result) { 

}, 'json'); 
1

jQuery prendra une « meilleure estimation » à la façon d'interpréter les données sur la base le type MIME et d'autres facteurs, pourrait-il être faux? Vous pouvez le forcer en ajoutant un fourth parameter à votre appel en spécifiant le type de données   — par exemple, "json", "text", "html" ... Full list here sur les docs ajax.