Javascript 通过Laravel4.1PHP控制器和JQuery/JSONP为外部小部件使用回调

Javascript 通过Laravel4.1PHP控制器和JQuery/JSONP为外部小部件使用回调,javascript,php,jquery,laravel,callback,Javascript,Php,Jquery,Laravel,Callback,我正在尝试制作一个外部小部件,允许其他站点的用户进行“投票”,我想收集并存储在我的数据库中。我正在尝试将其与我在Laravel的控制器/模型集成。但是,当我将javascript标记和div放在另一个站点上时,不会显示信息。现在我正试图通过jsonp传递简单的信息。代码如下: WidgetController.php: <?php class WidgetController extends BaseController { public function external_

我正在尝试制作一个外部小部件,允许其他站点的用户进行“投票”,我想收集并存储在我的数据库中。我正在尝试将其与我在Laravel的控制器/模型集成。但是,当我将javascript标记和div放在另一个站点上时,不会显示信息。现在我正试图通过jsonp传递简单的信息。代码如下:

WidgetController.php:

<?php

class WidgetController extends BaseController {


    public function external_widget() {


        $data = "{Hello World!}";

        if(array_key_exists('callback', $_GET)){

            header('Content-Type: text/javascript; charset=utf8');
            header('Access-Control-Allow-Origin: http://www.example.com/');
            header('Access-Control-Max-Age: 3628800');
            header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');

            $callback = $_GET['callback'];
            echo $callback.'('.$data.');';

        }else{
            // normal JSON string
            header('Content-Type: application/json; charset=utf8');

            echo $data;
        }
    }

}
最后,我尝试在另一个网页上使用以下命令调用此命令:

    <div id="example-widget-container"></div>


我试图在另一个网站上打印的“hello world”没有显示。你知道发生了什么事吗

要使用JSONP技术,您应该返回有效的JSON对象,并在其周围包装一个函数调用。JSON是无序属性值对的集合。{Hello World!}不是有效的JSON,尝试使用正确的JSON格式可能会解决您的问题

PHP

$data = "{msg:'Hello World!'}";
Javascript

var jsonp_url = "http://myurl.com/widget/external_widget?callback=?";
$.getJSON(jsonp_url, function(data) {
  $('#example-widget-container').html("This data comes from another server: " + data.msg);
});    
$data = "{msg:'Hello World!'}";
var jsonp_url = "http://myurl.com/widget/external_widget?callback=?";
$.getJSON(jsonp_url, function(data) {
  $('#example-widget-container').html("This data comes from another server: " + data.msg);
});