jqueryのは、$ .postを経由して、クロスドメインデータを送信します
質問
私は)($ .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
タグます。
他のヒント
編集のJSONPはソリューションですが、あなただけ(つまり、動作するすべてのだから)GETリクエストを作成する必要がない限り、私はそれをお勧めしません。 JSONPは、特にあなたがPOSTリクエストを行う必要があり、あなたのケースで、必ずしもRESTフレンドリーではありません。 POSTは、あなたのリソースのセマンティクスを満たし、あなたがそれを操作するつもりか場合は、単にJSONPを使用して取得するために切り替えることは私には醜いと感じています。