2009-11-03 4 views
0

On m'a dit que $ .getJSON est le meilleur moyen d'envoyer des données depuis et vers des serveurs externes. J'ai probablement gaspillé 7 heures de mon temps à essayer d'utiliser Ajax de JQUERY juste pour découvrir qu'aucun navigateur n'autorise ce type de méthode. Je voudrais envoyer les données en utilisant le getJSON Jquery et j'utilise cakephp comme ma réception (c'est-à-dire mon serveur externe) Voici ce que j'ai jusqu'à présent.

$.getJSON("http://play.mysite.com/usersessions/store/",{ data: "Hi!"}); 

Je ne veux pas de rappel parce que je n'en ai pas besoin. J'ai juste besoin d'envoyer des données au serveur externe. C'est un site MVC donc usersessions est mon contrôleur, store est mon action.

Voici mon code cakephp. Si vous ne le savez pas, c'est bien. Je viens vraiment besoin de savoir si j'envoie les données getJSON correctement

<?php class UsersessionsController extends AppController { 

var $name = 'Usersessions'; 
var $helpers = array('Html', 'Form','Ajax'); 
var $components = array('RequestHandler'); 


function store() 
{ 
    Configure::write('debug', 0); 
    $this->autoRender = false; 

    if($this->RequestHandler->isAjax()) { 
     if ($this->params['url']['data']) 
     { 
      $this->data['Usersession']['data'] = $this->params['url']['data']; 
      $this->Usersession->Save($this->data); 
      echo 'Success'; 
     } 
    }  
} 

}?>

Merci vous! GetJSON() permet de lire les données JSON du serveur.

+0

Y avait-il un quetion autre que « ce que cela regarde à droite »? –

+0

Si ça marche, c'est bon. –

+0

Vraisemblablement, le code ci-dessus ne fonctionne pas? –

Répondre

1

Si vous voulez simplement envoyer des paramètres du navigateur au serveur, utilisez simplement get() et n'utilisez pas le callback optionnel.

De la documentation:

Demander à la page test.php et envoyer des données supplémentaires le long (tout en ignorant toujours les résultats de retour).

$.get("test.php", { name: "John", time: "2pm" }); 

http://docs.jquery.com/Ajax/jQuery.get#urldatacallbacktype

+0

Il doit demander à partir d'une URL externe à l'extérieur du domaine, ainsi $ .ajax n'est pas une option. –

4

JQuery fournit un moyen facile à mettre en œuvre JSONP, qui est une condition nécessaire "hack" pour contourner les politiques de sécurité croisée-site scripting dans les navigateurs. La spécification d'un rappel dans la chaîne de requête de la requête est requise, avec un formatage spécial de la réponse par votre serveur.

Votre demande devrait mis en œuvre de manière à ceci:

$.getJSON("http://play.mysite.com/usersessions/store/?jsoncallback=?", 
    { data: "Hi!"}, function(){}); 
+0

Merci beaucoup les gars. Je pense que c'est ce dont j'ai besoin. Bien que le $ .Post ressemble à ce que je cherche. Je pense que la seule façon d'envoyer à un serveur externe est d'utiliser cette technique particulière. – numerical25

+1

juste pour souligner l'utilisation de 'jsoncallback =?' ajouté à l'URL externe, il est obligatoire de travailler. ;) –

Questions connexes