質問

私は)($ .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';
            }   
        }
    }
?>

あなたはそれがどんな評価するん前に、私は「ハロー」置く見ることができるように。私は私のコンソールでそれを見ることができるはずですが、私はいけません。私はgetで、この方法を試してみましたが、私は、応答「こんにちは」を参照していました。あなたはどちら$.postを介してデータCROSSドメインを送信することはできませんという結論に私を残しています。誰かが私が間違っていることを証明できない限り動作しているようです唯一の方法はgetJSON()です。

役に立ちましたか?

解決

あなたは普通のクロスドメインAJAXリクエストを実行することはできません。あなたは JSONP して使用する必要があり、これはGETリクエスト(jQueryの注入ので、それはだでのみ動作しますリクエストのみ)JavaScriptを取得するためにGETを使用することができますscriptタグを実行するためにDOMにscriptタグます。

他のヒント

あなたがリクエストクロスドメインを行うことができるようにしたい場合は、カールやApache = "http://hc.apache.org/httpclient-3.x/" のrel = "nofollowをnoreferrer"> HTTPClientののか何かます。

編集のJSONPはソリューションですが、あなただけ(つまり、動作するすべてのだから)GETリクエストを作成する必要がない限り、私はそれをお勧めしません。 JSONPは、特にあなたがPOSTリクエストを行う必要があり、あなたのケースで、必ずしもRESTフレンドリーではありません。 POSTは、あなたのリソースのセマンティクスを満たし、あなたがそれを操作するつもりか場合は、単にJSONPを使用して取得するために切り替えることは私には醜いと感じています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top