jquery getJSON 为何无法将get到的JSON赋值?

$(document).ready(function () {
    $("button").click(function(){
        $.getJSON("http://xxx.com/api/apiMainnews", function(data){
            $.each(data, function(i,item){
                alert("JSON Data: " + item.ftitle);
            });
        });
    });
});

没写过前端,硬着头皮上,然后我测试的时候发现我跟着jquery的教程写了完全没反应,在浏览器network里面已经看到获得了的JSON数据,但是为何无法赋值给 data ?

html是:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta charset="utf-8">
    <title>test</title>

        <!-- HTML5 Shim 和 Respond.js 用于让 IE8 支持 HTML5元素和媒体查询 -->
        <!-- 注意: 如果通过 file://  引入 Respond.js 文件,则该文件无法起效果 -->
        <!--[if lt IE 9]>
         <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
         <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
      <![endif]-->
    </head>

    <body>
    <button>获得 JSON 数据</button>
      <p id="ftest" name="ftest">
      </p>
        <!--nav-->
        <!-- jQuery (Bootstrap 的 JavaScript 插件需要引入 jQuery) -->
        <script src="./jquery.min.js"></script>
        <script src="./apit.js"></script>

    </body>
</html>

ps.jquery我用的是1.11

ps.最奇怪的是,有几次我竟然能赋值成功,但是大多数时候失败,网络肯定是没有问题的,何解?

阅读 7.7k
5 个回答

前端时间解决了问题,忘了上来终结了

主要原因是因为输出的json中包含部分换行符,未经过处理,到了前台,部分浏览器在parse json的时候就无法正常读取,造成该json无法正常被显示出来,谢谢大家!

解决的方式,我在后台输出json前将换行符强制转换,之后所有的浏览器、parse都可以正确读取,谢谢大家。

我暂时从代码方面看不出来问题。可以试试chrome的断点调试,看看是否JS拿到返回的数据。或者我自己的笨方法就是 console.log(data);

$(document).ready(function () {
    $("button").click(function(){
        $.getJSON("http://xxx.com/api/apiMainnews", function(data){
            console.log(data); //这个位置,看看是否拿到。
            $.each(data, function(i,item){
                alert("JSON Data: " + item.ftitle);
            });
        });
    });
});

你是不是屏蔽了弹框?

题注是跨域操作的?跨域的话不是这么做的。
PS:您可以通过使用JSONP形式的回调函数来加载其他网域的JSON数据,如 "myurl?callback=?"。jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

1) 确认返回的JSON数据格式是否是数组格式的
2) @NeoChang 所讲的使用console.log 看下输出的数据内容

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏