将$ .getJSON发送到外部服务器

时间:2009-11-03 18:02:40

标签: jquery json cakephp send

我被告知$ .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;

谢谢!

2 个答案:

答案 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" } );

http://docs.jquery.com/Ajax/jQuery.get#urldatacallbacktype