我被告知$ .getJSON是向外部服务器发送数据和从外部服务器发送数据的最佳方式。我可能浪费了7个小时的时间来尝试使用JQUERY的Ajax来发现没有浏览器允许这种类型的方法。我想使用Jquery getJSON发送数据,我使用cakephp作为我的接收端(即我的外部服务器)这是我到目前为止所拥有的。
$.getJSON("http://play.mysite.com/usersessions/store/",{ data: "Hi!"});
我不想要回调,因为我不需要它。我只需要将一些数据发送到外部服务器。这是MVC网站,所以usersessions是我的控制器,商店是我的行动。
下面是我的cakephp代码。如果你不知道那就没关系。我真的需要知道我是否正确发送getJSON数据
<?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;
if($this->RequestHandler->isAjax()) {
if ($this->params['url']['data'])
{
$this->data['Usersession']['data'] = $this->params['url']['data'];
$this->Usersession->Save($this->data);
echo 'Success';
}
}
}
} ?&GT;
谢谢!
答案 0 :(得分:4)
JQuery提供了一种实现 JSONP 的简便方法,这是在浏览器中绕过跨站点脚本安全策略的必要“黑客”。需要在请求的查询字符串中指定回调,以及服务器对响应的一些特殊格式。
您的请求需要以这样的方式实施:
$.getJSON("http://play.mysite.com/usersessions/store/?jsoncallback=?",
{ data: "Hi!"}, function(){});
答案 1 :(得分:1)
getJSON()用于从服务器读取JSON数据。如果您只想将一些参数从浏览器发送到服务器,只需使用get(),不要使用可选的回调。
来自文档:
请求test.php页面并发送一些额外的数据(同时仍然忽略返回结果)。
$.get("test.php", { name: "John", time: "2pm" } );