9

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

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

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

演示.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 时,它不起作用。有没有人可以解决我的问题?如果您能给我一些反馈,我将不胜感激。提前致谢!

4

4 回答 4

3

您的网址中的&符号是错误的:

loggedin/&jsoncallback=?

它应该是类似的东西

loggedin/?jsoncallback=?

运行我得到的响应

jsonp123( ...

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

于 2009-04-15T22:56:58.033 回答
1

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

$config['enable_query_strings'] = TRUE;
于 2009-05-01T14:43:32.343 回答
1

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

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

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

于 2011-07-30T19:01:09.390 回答
0

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

$this->input->get();

在您的控制器中。

于 2011-07-28T04:11:19.790 回答