Pregunta

Estoy tratando de enviar datos a través de una página web cakephp (MVC), a través de $ .post (). a continuación es el código

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

A continuación se muestra los datos cakephp que recupera los datos y los almacena. Si conoces pastel, muy bien, pero si no está bien. Realmente estoy tratando de averiguar si yo estoy enviando los datos correctamente

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

Como se puede ver que puse 'hola' que tiene ante sí ninguna evaluación. Debería ser capaz de ver que en mi consola, pero yo no. He intentado este método con el get y vi la respuesta 'hola'. Lo que me está dejando a la conclusión de que no puede enviar datos a través de varios dominios $.post. El único método que parece funcionar es getJSON() menos que alguien pueda demostrar que estoy equivocado.

¿Fue útil?

Solución

No se puede realizar solicitudes ordinarias ajax dominios. Es necesario utilizar JSONP y esto sólo funciona con peticiones GET (eso es porque jQuery inyecta una etiqueta script al DOM para llevar a cabo la solicitud y una etiqueta script sólo puede utilizar GET a buscar javascript).

Otros consejos

Si usted quiere ser capaz de hacer peticiones a través del dominio, tendrá que implementar un proxy HTTP en el dominio de lo que haría que las peticiones HTTP en su nombre a través de un servidor de utilidad / biblioteca como Curl o Apache HTTPClient o algo así.

Editar: JSONP es una solución, pero yo no lo recomendaría a menos que sólo necesita hacer peticiones GET (porque es lo único que funciona). JSONP tampoco es necesariamente RESTO ambiente, especialmente en el caso de que usted necesita para hacer una petición POST. Si la POST satisface la semántica de su recurso y cómo va a manipularlo, el cambio a GET sólo para usar JSONP siente feo para mí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top