Domanda

Sto cercando di inviare i dati verso un sito web cakephp (MVC), tramite $ .post (). sotto è il codice

$('#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");
})

Di seguito è riportato il dato cakephp che recupera i dati e li memorizza. Se si conosce la torta, grande, ma se non va bene. Sto davvero cercando di capire se io mando i dati correttamente

<?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';
            }   
        }
    }
?>

Come potete vedere ho messo 'ciao', prima lo fa alcuna valutazione. Dovrei essere in grado di vedere che nella mia console, ma io non. Ho provato questo metodo con il get e ho fatto vedere la risposta 'ciao'. Il che mi lascia alla conclusione che non è possibile inviare i dati del dominio CROSS via $.post. L'unico metodo che sembra funzionare è getJSON() a meno che qualcuno può dimostrare il torto.

È stato utile?

Soluzione

Non è possibile eseguire le richieste Ajax dominio croce ordinarie. È necessario utilizzare JSONP e questo funziona solo con le richieste GET (questo perché jquery inietta una tag script al DOM al fine di eseguire la richiesta e un tag script può utilizzare solo GET per recuperare javascript).

Altri suggerimenti

Se si vuole essere in grado di fare le richieste cross-domain, è necessario implementare un proxy HTTP sul tuo dominio che renderebbe richieste HTTP per vostro conto tramite un lato server di utilità / biblioteca come Curl o Apache HTTPClient o qualcosa del genere.

Modifica JSONP è una soluzione, ma io non lo consiglio a meno che non avete solo bisogno di fare richieste GET (perché questo è tutto ciò che funziona). JSONP, inoltre, non è necessariamente REST-friendly, soprattutto nel vostro caso in cui è necessario fare una richiesta POST. Se il POST soddisfa la semantica di risorsa e come si intende manipolare, il passaggio a ottenere solo da usare JSONP si sente brutto per me.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top