-1

我正在开发一个 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 . ')';

}

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

4

2 回答 2

0

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

header("访问控制允许来源:*");

于 2013-07-29T17:04:11.910 回答
0

您可能没有呈现正确的布局/视图。有关使用 Json 和 Xml 视图的信息,请参阅此页面。

脚步:

  1. 添加Router::parseExtensions('json');到您的router.php文件中。
  2. 加载RequestHandlerComponent您的(App)Controller.
  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&jsoncallback=?

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

    注意.json.

于 2013-07-29T18:23:13.227 回答