Js数组到json转换,结果是空白页


js array to json converting, result is blank page

我有一个问题与我的js数组json转换器,我没有得到任何结果,但我不知道是什么问题。

我的源代码(在外部文件中):

var data = new Array(); data[0] = new Array('Joe','1973-12-11','Male'); data[1] = new Array('Harris','1957-12-11','Male'); data[2] = new Array('Sarah','1974-03-22','Female'); 
我代码:

  <html>
    <head>
    <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
    <script type="text/javascript" src="json2.js">
    </script>
    <script src="source.php" type="text/javascript" 
    language="javascript"></script>

    </head>
    <body>

    <script language="javascript" type="text/javascript">
    <!--
    $(document).ready(function () {

    var json = data;
            var tr;
            for (var i = 0; i < json.length; i++) {
    console.log(json[i])
                tr = $('<tr/>');
                tr.append("<td>" + json[i][0] + "</td>");
                    tr.append("<td>" + json[i][1] + "</td>");
                    tr.append("<td>" + json[i][2] + "</td>");
                $('table').append(tr);
            }
        });

    </script>
    <table>
    </table>
    </body>
    </html>

结果一页空白,不知道为什么

实际上你所有的问题都是由这一行引起的:

tr = $('<tr/>'); 

这里的选择器是tag name, classid,而你指定的字符串包含HTML是错误的,改变它像这样:

tr = $('tr');

这就是为什么你会得到:

SyntaxError: expected expression, got '<'

同时将表格移出脚本标签:在body:

 </script>
    <table>
    </table>
 </body>

如果您没有包含jQuery,请像这样包含它:

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>

不需要stringify。只需将data赋值给json变量,或者直接迭代data:

var json = data;

您的source.php文件应该看起来像这样:

<?php
header("content-type: application/x-javascript");
echo"var data = new Array(); data[0] = new Array('Joe','1973-12-11','Male'); data[1] = new Array('Harris','1957-12-11','Male'); data[2] = new Array('Sarah','1974-03-22','Female');
";

创建table元素,或者先把它放到html中:

<table></table>

也将索引从1,2,3改为0,1,2:

var tr;
for (var i = 0; i < json.length; i++) {
    tr = $('<tr/>');
    tr.append("<td>" + json[i][0] + "</td>");
    tr.append("<td>" + json[i][1] + "</td>");
    tr.append("<td>" + json[i][2] + "</td>");
    $('table').append(tr);
}
输出:

Joe 1973-12-11  Male
Harris  1957-12-11  Male
Sarah   1974-03-22  Female