1

$ .post()を介して、cakephp(mvc)Webサイトにデータを送信しようとしています。以下はコードです

$('#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」が表示されました。これは、を介してデータCROSSドメインを送信することはできないという結論に私を残しています$.post。うまくいくと思われる唯一の方法はgetJSON()、誰かが私を間違っていると証明できない限りです。

4

2 に答える 2

3

通常のクロスドメインajaxリクエストは実行できません。JSONPを使用する必要があり、これはGETリクエストでのみ機能します(これは、jqueryscriptがリクエストを実行するためにDOMにタグを挿入し、タグscriptはGETを使用してjavascriptをフェッチできるためです)。

于 2009-11-04T17:14:06.733 に答える
2

ドメイン間でリクエストを実行できるようにする場合は、ドメインにHTTPプロキシを実装する必要があります。これにより、CurlやApacheHTTPClientなどのサーバー側のユーティリティ/ライブラリを介してHTTPリクエストが作成されます。

編集: JSONPは解決策ですが、GETリクエストを行うだけでよい場合を除いて、JSONPはお勧めしません(これですべてが機能するため)。JSONPは、特にPOSTリクエストを行う必要がある場合は、必ずしもRESTに適しているとは限りません。POSTがリソースのセマンティクスとその操作方法を満たしている場合、JSONPを使用するためだけにGETに切り替えるのは、私には醜い感じがします。

于 2009-11-04T17:36:49.690 に答える