Pergunta

Eu estou tentando enviar dados através de uma cakephp (MVC) website, via $ .post (). abaixo está o 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");
})

Segue-se os dados do CakePHP que recupera os dados e armazena-o. Se você sabe bolo, ótimo, mas se não está tudo bem. Estou realmente tentando descobrir se eu estou enviando os dados corretamente

<?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 você pode ver eu coloquei 'Olá' antes que ele faz qualquer avaliação. Eu deveria ser capaz de ver que no meu console, mas eu não. Eu tentei este método com o get e eu fiz ver a resposta 'Olá'. Que está me deixando à conclusão de que não é possível enviar dados de domínio cruzado via $.post. O único método que parece funcionar é getJSON() a menos que alguém pode provar que estou errado.

Foi útil?

Solução

Você não pode executar requisições Ajax de domínio cruzado comuns. Você precisa usar JSONP e isso só funciona com solicitações GET (que é porque jquery injeta uma script tag ao DOM, a fim de realizar o pedido e uma tag script só pode usar GET para buscar javascript).

Outras dicas

Se você quer ser capaz de fazer solicitações entre domínios, você precisará implementar um proxy HTTP no seu domínio que tornaria HTTP pedidos em seu nome através de um lado do servidor utilitário / biblioteca como Curva ou Apache HTTPClient ou algo assim.

Editar: JSONP é uma solução, mas eu não recomendo a menos que você só precisa fazer solicitações GET (porque isso é tudo que as obras). JSONP também não é necessariamente DESCANSAR-friendly, especialmente no seu caso onde você precisa fazer uma solicitação POST. Se satisfaz POST a semântica do seu recurso e como você pretende para manipulá-lo, a mudança para obter apenas usar JSONP sente feio para mim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top