【问题标题】:JsonP with CakePHP与 CakePHP 的 JsonP
【发布时间】:2013-07-29 14:06:41
【问题描述】:

我正在开发一个 CakePHP 2.x 应用程序并尝试实现 JSONP。这是我的第一次,所以我不知道我该怎么做:

$(function(){
 $.getJSON("https://www.example.com/myweb/api/getjsonp&jsoncallback=?",
 function(data){
    console.log(data);
    }
     );

        });

控制器:

public function getjsonp(){

$id = $this->Auth->user('idUser');
$messages = $this->Contact->getMessages($id);


$totalmessages = json_encode($messages);
echo $_GET['jsoncallback'] . '(' . $totalmessages . ')';

}

代码不工作。我错过了什么吗?

【问题讨论】:

    标签: jquery json cakephp jsonp cakephp-2.1


    【解决方案1】:

    也许你还没有在php中打开这个 尝试将此代码添加到 php 文件的顶部

    header("Access-Control-Allow-Origin: *");

    【讨论】:

    • 这到底是什么?我正在做一个 Cakephp,这样对吗?
    【解决方案2】:

    您可能没有呈现正确的布局/视图。请参阅 this page 了解使用 Json 和 Xml 视图。

    步骤:

    1. Router::parseExtensions('json'); 添加到您的router.php 文件中。
    2. 在您的(App)Controller 中加载RequestHandlerComponent
    3. 创建一个View(命名为app/View/Api/json/getjsonp.ctp)。
    4. View 中填写:

      <?php
      $totalmessages = json_encode($messages);
      echo $_GET['jsoncallback'] . '(' . $totalmessages . ')';
      
    5. 像这样从控制器传递$messages

      public function getjsonp() {
        $id = $this->Auth->user('idUser');
        $messages = $this->Contact->getMessages($id);
      
        $this->set(compact('messages'));
      }
      
    6. 更改网址:

      https://www.site.com/myweb/api/getjsonp&amp;jsoncallback=?

      https://www.site.com/myweb/api/getjsonp.json&amp;jsoncallback=?

      注意.json

    【讨论】:

    • 我没有得到文档......那里没有任何例子......只有简单的英语解释
    • 不工作......当我在浏览器中输入网址时......它找不到类
    • 你添加Router::parseExtensions('json')了吗?
    • 是的,我已经添加了......当我尝试将我在问题中写入浏览器的代码的 url 时......我可以看到结果 .bot 不在 firebug 的控制台选项卡中...... . 但你的代码不是编码。它不会去正确的 url
    猜你喜欢
    • 2011-03-14
    • 2014-08-27
    • 1970-01-01
    • 2013-09-19
    • 2013-02-14
    • 2012-02-09
    • 2013-10-09
    • 2012-03-14
    • 1970-01-01
    相关资源
    最近更新 更多