Question

Je suis en train d'envoyer des données vers un site Web CakePHP (mvc), par l'intermédiaire .post $ (). ci-dessous est le code

$('#testReq').click(function () {
    console.log('Button Works');
    $.post('http://play.anthonylgordon.com/usersessions/store/', { data: 'test7' }, function (data) {
        //data contains the json object retrieved.
        console.log(data.status);
    }, "json");
})

Voici les données de CakePHP qui récupère les données et les stocke. Si vous connaissez le gâteau, grand mais sinon ça va. Je suis vraiment essayer de comprendre si je vous envoie correctement les données

<?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;
           echo 'hello';
            if ($this->params['url']['data'])
            {
                $this->data['Usersession']['data'] = $this->params['url']['data'];
                $this->Usersession->Save($this->data);
                echo 'Success';
            }   
        }
    }
?>

Comme vous pouvez le voir, je mets « bonjour » avant qu'il ne toute évaluation. Je devrais être en mesure de voir que dans ma console mais je ne. J'ai essayé cette méthode avec le get et je l'ai vu la réponse « bonjour ». Ce qui me laisse à la conclusion que vous ne pouvez pas envoyer domaine CROSS données via $.post. La seule méthode qui semble fonctionner est getJSON() à moins que quelqu'un peut me prouver le contraire.

Était-ce utile?

La solution

Vous ne pouvez pas effectuer plusieurs domaines dans les demandes ordinaires ajax. Vous devez utiliser JSONP et cela fonctionne uniquement avec les requêtes GET (c'est parce que jquery injecte une tag script au DOM afin d'effectuer la demande et une étiquette de script ne peut utiliser GET chercher javascript).

Autres conseils

Si vous voulez être en mesure de faire des demandes inter-domaines, vous aurez besoin de mettre en œuvre un proxy HTTP sur votre domaine qui rendrait les requêtes HTTP en votre nom par l'intermédiaire d'un côté serveur utilitaire / bibliothèque comme Curl ou Apache HTTPClient ou quelque chose.

Modifier: JSONP est une solution, mais je ne le recommanderais pas à moins que vous ne devez effectuer des requêtes GET (parce que tout ce qui fonctionne). JSONP est pas nécessairement REST sympathique, surtout dans votre cas où vous devez faire une demande POST. Si POST satisfait la sémantique de votre ressource et comment vous avez l'intention de le manipuler, le passage à Parvenez à utiliser JSONP se sent laid pour moi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top