문제

$ .post ()를 통해 CakePhp (MVC) 웹 사이트로 데이터를 보내려고합니다. 아래는 코드입니다

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

아래는 데이터를 검색하고 저장하는 CakePHP 데이터입니다. 케이크를 알고 있다면 훌륭하지만 괜찮지 않다면 괜찮습니다. 데이터를 올바르게 보내고 있는지 알아 내려고 노력하고 있습니다.

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

보시다시피 평가를하기 전에 'Hello'를 넣습니다. 콘솔에서 볼 수 있어야하지만 그렇지 않습니다. 나는이 방법을 Get과 함께 시도했고 'Hello'응답을 보았다. 당신은 당신이 데이터를 통해 데이터 크로스 도메인을 보낼 수 없다는 결론을 내버려두고 있습니다. $.post. 작동하는 유일한 방법은입니다 getJSON() 누군가가 나를 잘못 증명할 수 없다면.

도움이 되었습니까?

해결책

일반적인 크로스 도메인 AJAX 요청을 수행 할 수 없습니다. 사용해야합니다 JSONP 그리고 이것은 GET 요청과 함께 만 작동합니다 (jQuery가 주입하기 때문입니다. script 요청을 수행하기 위해 DOM에 태그를 지정하고 script 태그는 get javascript 만 사용할 수 있습니다).

다른 팁

크로스 도메인 요청을 수행하려면 도메인에서 HTTP 프록시를 구현 해야하는 경우 Curl 또는 Apache와 같은 서버 측 유틸리티/라이브러리를 통해 귀하를 대신하여 HTTP 요청을 할 수 있습니다. httpclient 또는 뭔가.

편집하다: JSONP는 솔루션이지만 요청을받을 필요가 없다면 권장하지는 않습니다 (이것이 전부이기 때문에). JSONP는 또한 특히 귀하의 경우 게시물 요청을 해야하는 경우 반드시 휴식 친화적 인 것은 아닙니다. Post가 귀하의 자원의 의미와 자원을 조작하려는 방법을 만족 시키면 JSONP를 사용하도록 전환하는 것은 나에게 못 생겼습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top