我正在尝试通过$ .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尝试了这个方法,我确实看到了响应'hello'。这让我得出的结论是,您无法通过$.post
发送数据CROSS域名。唯一可行的方法是getJSON()
,除非有人可以证明我错了。
答案 0 :(得分:3)
您无法执行普通的跨域ajax请求。您需要使用JSONP,这仅适用于GET请求(这是因为jquery向DOM注入script
标记以执行请求,而script
标记只能使用GET获取javascript)。
答案 1 :(得分:2)
如果您希望能够跨域执行请求,则需要在您的域上实现HTTP代理,该代理将通过服务器端实用程序/库(如Curl或Apache)代表您发出HTTP请求{{3等等。
编辑: JSONP是一个解决方案,但我不推荐它,除非您只需要发出GET请求(因为这一切都有效)。 JSONP也不一定是REST友好的,特别是在您需要发出POST请求的情况下。如果POST满足您的资源的语义以及您打算如何操作它,那么切换到GET只是为了使用JSONP对我来说感觉很难看。