【问题标题】:JSONP in CodeIgniterCodeIgniter 中的 JSONP
【发布时间】:2010-10-19 17:36:27
【问题描述】:

我在 CodeIgniter 中使用 jQuery JSONP 方法 $.getJSON 时遇到问题。从中获取 JSON 的 URL 如下:

http://spinly.000space.com/index.php/admin/isloggedin  

问题是我有一个运行$.getJSON 方法的demo.html 文件,并从我上面指出的URL 中获取数据。

demo.html

<html>
<head>
  <script src="http://www.spinly.000space.com/public/js/jquery.js"></script>

  <script>
  $(document).ready(function(){
  var myurl = "http://spinly.000space.com/index.php/admin/isloggedin/&jsoncallback=?";

    //myurl = "http://com.lnk.bz/jsonp.php?sleep=3&jsoncallback=?";
    $.getJSON(myurl,function(adat) {
        alert(adat);
     //   clearTimeout(t);
    }); 

  });
  </script>
</head>
<body>
  <div id="images">
  </div>
</body>
</html>

当我运行demo.html 时,什么也没有发生。如您所见,当我将 URL 更改为另一个不使用 CodeIgniter 作为框架的 URL 时,它应该提醒返回的数据。我让警报功能运行,但在这种情况下,使用 CodeIgniter 备份的 URL 时,它不起作用。有没有人可以解决我的问题?如果您能给我一些反馈,我将不胜感激。提前致谢!

【问题讨论】:

  • 寻找在CI中实现jsonp的好方法...
  • 在详细说明之前,您能否指定您使用的 CI 版本,是“Core”还是“Reactor”?
  • 这个网址已经失效了。

标签: php jquery codeigniter jsonp


【解决方案1】:

你的网址中的&符号错误:

loggedin/&jsoncallback=?

应该是这样的

loggedin/?jsoncallback=?

运行我得到的响应

jsonp123( ...

这意味着它会尝试调用 jsonp123 函数,此时您的代码中的 adat 部分从未使用过。

【讨论】:

  • 后现代:我已经更改了代码,现在 spinly.000space.com/index.php/admin/isloggedin 显示 {"title":"user online","user":{"online":"yes"}} 仍然如此不起作用。
  • getJson 方法创建了一个新函数,该函数被替换为您的 url,发送时类似于:loggedin/?jsoncallback=jsonp1239837994134&_=1239838173986 尝试将您的 php 替换为:$cb = $_GET[ 'jsoncallback'];回声$cb;回声'({"test":true})';这有点令人困惑。
【解决方案2】:

默认情况下,CI 不允许查询字符串,那么您是否在 config.php 中启用了 enable_query_strings

$config['enable_query_strings'] = TRUE;

【讨论】:

    【解决方案3】:

    我认为您面临的问题是由于浏览器对不允许跨域请求的限制。我猜您将应用托管在其他域/子域上,这就是导致此问题的原因。

    您需要使用的是 JSONP,即带有填充的 Json。详情在这里:http://en.wikipedia.org/wiki/JSONP

    在这里查看 jquerys ajax api 中的 jsonp:http://api.jquery.com/jQuery.ajax/ 看看是否能解决您的问题。

    【讨论】:

      【解决方案4】:

      还要确保在 config.php 中将 $config['allow_get_array'] 设置为 TRUE。这将允许您使用

      $this-&gt;input-&gt;get();

      在您的控制器中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-23
        • 1970-01-01
        • 1970-01-01
        • 2018-10-29
        • 1970-01-01
        • 1970-01-01
        • 2010-09-12
        相关资源
        最近更新 更多