2009-11-03 62 views
0

我被告知$ .getJSON是发送数据到外部服务器和从外部服务器发送数据的最佳方式。我可能浪费了7个小时的时间试图使用JQUERY的Ajax来做这件事,只是为了发现没有浏览器允许这种类型的方法。我想使用Jquery getJSON发送数据,并且我使用cakephp作为接收端(即,我的外部服务器)。这是迄今为止我所拥有的。

$.getJSON("http://play.mysite.com/usersessions/store/",{ data: "Hi!"}); 

我不想回拨,因为我不需要它。我只需要将一些数据发送到外部服务器。这是MVC网站,所以usersessions是我的控制器,store是我的动作。

下面是我的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'; 
     } 
    }  
} 

} ?>

谢谢你!

+0

是否有一个quetion比“戴上这个权利”等? – 2009-11-03 18:04:40

+0

如果有效,那很好。 – 2009-11-03 18:06:09

+0

大概上面的代码不工作? – 2009-11-03 18:06:15

回答

1

getJSON()用于从服务器读取JSON数据。如果你只是想从浏览器发送一些参数到服务器,只需使用get()并且不要使用可选的回调函数。

从文档:

请求的页面test.php的,并沿(同时还忽略返回结果)发送一些额外的数据。

$.get("test.php", { name: "John", time: "2pm" }); 

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

+0

他需要从域外的外部URL请求,因此$ .ajax不是一个选项。 – 2009-11-03 19:06:36

4

jQuery提供实现JSONP,这是一种简单的方法一个必要的“黑客”来解决跨站脚本安全政策的浏览器。在请求的查询字符串中指定回调是必需的,以及服务器响应的一些特殊格式。

你的要求将需要的方式来实现这样的:

$.getJSON("http://play.mysite.com/usersessions/store/?jsoncallback=?", 
    { data: "Hi!"}, function(){}); 
+0

非常感谢你们。我认为这是我需要的。尽管$ .Post听起来像我正在寻找的东西。我认为发送到外部服务器的唯一方法是使用这种特定的技术。 – numerical25 2009-11-04 00:21:25

+1

只是为了强调'jsoncallback =?'的使用附加到外部URL,这是强制性的工作。 ;) – 2009-11-18 04:16:56