【问题标题】:Sending $.getJSON to external server发送 $.getJSON 到外部服务器
【发布时间】:2010-12-12 17:59:47
【问题描述】:

有人告诉我,$.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';
        }   
   }    
}

} ?>

谢谢!

【问题讨论】:

  • 除了“这看起来对吗”之外还有其他问题吗?
  • 大概是上面的代码行不通吧?
  • 您必须为此提供回调才能跨域运行。使用 .getJSON 方法时,jquery 会查找是否存在“callback=?”查询字符串中的参数以知道它是一个 JSONP 请求。然后,它会为您构建一个

标签: jquery json cakephp send


【解决方案1】:

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

来自文档:

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

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

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

【讨论】:

  • 他需要从域外的外部 url 请求,因此 $.ajax 不是一个选项。
【解决方案2】:

JQuery 提供了一种简单的方法来实现 JSONP,这是绕过浏览器中跨站点脚本安全策略的必要“技巧”。需要在请求的查询字符串中指定回调,以及服务器响应的一些特殊格式。

您的请求需要以如下方式实现:

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

【讨论】:

  • 非常感谢大家。我想这就是我需要的。尽管 $.Post 听起来像我正在寻找的东西。我认为发送到外部服务器的唯一方法是使用这种特殊技术。
  • 只是为了强调 'jsoncallback=?' 的使用附加到外部 URL,它是强制工作的。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-19
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
相关资源
最近更新 更多