JSON Parse失败了

时间:2015-12-13 07:56:04

标签: javascript php jquery json

我正在使用JSON

{
   "js":[
      [
         "556",
         "Name the Bengali film television and stage actor who passed away recently?",
         "Gaynar Baksha",
         "Byomkesh Bakshi",
         "Pijush Ganguly",
         "Kaushik Ganguly",
         "Pijush Ganguly",
         "Beginner",
         "Android",
         "First Mobile OS by google"
      ],
      [
         "557",
         "Venkateswara Rao passed away recently. He was a",
         "Telugu poet",
         "Telugu director",
         "Telugu actor",
         "Telugu lyricist",
         "Telugu actor",
         "Beginner",
         "Android",
         "First Mobile OS by google"
      ],
      [
         "559",
         "Which Indian cricketer who became the fourth player to register hundred in ODIs? ",
         "Ishant Sharma",
         "Virendra Sehwag",
         "MS Dhoni",
         "Virat Kohli",
         "Virat Kohli",
         "Beginner",
         "Android",
         "First Mobile OS by google"
      ],
      [
         "568",
         "First Android Mobile ?",
         "Motorola",
         "Nokia",
         "Lenevo",
         "HTC",
         "Motorola",
         "Moderate",
         "Android",
         "Moto is the first company"
      ],
      [
         "569",
         "col1",
         "col2",
         "col3",
         "col4",
         "",
         "",
         "",
         "",
         ""
      ],
      [
         "570",
         "\u092d\u093e\u0930\u0924 \u0915\u0947 \u092a\u093e\u0938 125 \u092a\u0930\u092e\u093e\u0923\u0941 \u0939\u0925\u093f\u092f\u093e\u0930, \u091c\u093e\u0928\u093f\u090f; \u0915\u093f\u0938\u0915\u0940 \u0915\u093f\u0924\u0928\u0940 \u0924\u093e\u0915\u0924",
         "\u092a\u093e\u0938 125 \u092a\u0930\u092e\u093e\u0923\u0941",
         "data",
         "Php",
         "",
         "",
         "",
         "",
         ""
      ],
      [
         "571",
         "\u092a\u093e\u0938 125 \u092a\u0930\u092e\u093e\u0923\u0941",
         "\u0915\u093f\u0938\u0915\u0940 \u0915\u093f\u0924\u0928\u0940 \u0924\u093e\u0915\u0924",
         "video",
         "excel with php",
         "",
         "",
         "",
         "",
         ""
      ]
   ]
}

当我在http://www.jsoneditoronline.org/上检查时,它显示正确,即已经过验证,但是当我使用AJAX和Jquery将其附加到HTML表中时,无法追加它。

我追加它的代码如下:

$.ajax({
    type: "GET",
    url: "searchall.php",
    contentType: "application/json; charset=utf-8",
    success: function(data) {
        var response = $.parseJSON(data);

        for (i = 0; i < response.length; i++) {
            $('.dataTableReport').append('<tr style="text-align:center;"><td style="width:6.8%"><span><input name="qid" type="checkbox" value="' + response[i].Question_id + '" style="margin-left: 5%;"/>&nbsp&nbsp&nbsp<label for="qid">' + response[i].Question_id + '</label></span></td><td style="width:20.77%">' + response[i].Question + '</td><td style="width:9.3%">' + response[i].opt1 + '</td><td style="width:9%">' + response[i].opt2 + '</td><td style="width:9%">' + response[i].opt3 + '</td><td style="width:9.8%">' + response[i].opt4 + '</td><td style="width:9.1%">' + response[i].correct + '</td><td style="width:17.3%">' + response[i].explain + '</td><td style="width:5%" onclick="edit(' + response[i].Question_id + ')"> <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></td><td style="width:5%" onclick="deletee(' + response[i].Question_id + ')"> <span class="glyphicon glyphicon-trash" aria-hidden="true"></span></td></tr>');
        }
    }
});

表格中的所有字段都填充了“未定义”

如何解析JSON,以及如何追加?

我已将我的JSON修改为

[ { "Question_id":"556", "Question":"Name the Bengali film television and stage actor who passed away recently?", "opt1":"Gaynar Baksha", "opt2":"Byomkesh Bakshi", "opt3":"Pijush Ganguly", "opt4":"Kaushik Ganguly", "correct":"Pijush Ganguly", "Level":"Beginner", "Category":"Android", "explain":"First Mobile OS by google" }, { "Question_id":"557", "Question":"Venkateswara Rao passed away recently. He was a", "opt1":"Telugu poet", "opt2":"Telugu director", "opt3":"Telugu actor", "opt4":"Telugu lyricist", "correct":"Telugu actor", "Level":"Beginner", "Category":"Android", "explain":"First Mobile OS by google" }, { "Question_id":"559", "Question":"Which Indian cricketer who became the fourth player to register hundred in ODIs? ", "opt1":"Ishant Sharma", "opt2":"Virendra Sehwag", "opt3":"MS Dhoni", "opt4":"Virat Kohli", "correct":"Virat Kohli", "Level":"Beginner", "Category":"Android", "explain":"First Mobile OS by google" }, { "Question_id":"568", "Question":"First Android Mobile ?", "opt1":"Motorola", "opt2":"Nokia", "opt3":"Lenevo", "opt4":"HTC", "correct":"Motorola", "Level":"Moderate", "Category":"Android", "explain":"Moto is the first company" }, { "Question_id":"569", "Question":"col1", "opt1":"col2", "opt2":"col3", "opt3":"col4", "opt4":"", "correct":"", "Level":"", "Category":"", "explain":"" }, { "Question_id":"570", "Question":"\u092d\u093e\u0930\u0924 \u0915\u0947 \u092a\u093e\u0938 125 \u092a\u0930\u092e\u093e\u0923\u0941 \u0939\u0925\u093f\u092f\u093e\u0930, \u091c\u093e\u0928\u093f\u090f; \u0915\u093f\u0938\u0915\u0940 \u0915\u093f\u0924\u0928\u0940 \u0924\u093e\u0915\u0924", "opt1":"\u092a\u093e\u0938 125 \u092a\u0930\u092e\u093e\u0923\u0941", "opt2":"data", "opt3":"Php", "opt4":"", "correct":"", "Level":"", "Category":"", "explain":"" }, { "Question_id":"571", "Question":"\u092a\u093e\u0938 125 \u092a\u0930\u092e\u093e\u0923\u0941", "opt1":"\u0915\u093f\u0938\u0915\u0940 \u0915\u093f\u0924\u0928\u0940 \u0924\u093e\u0915\u0924", "opt2":"video", "opt3":"excel with php", "opt4":"", "correct":"", "Level":"", "Category":"", "explain":"" } ]

仍然以下代码无效

$.ajax({
                type: "GET",
                url: "sall.php" ,
                dataType: "text",
                success : function(data) 
                {
                var response = $.parseJSON(data);       
for (i = 0; i < response.length; i++) 
                {
$('.dataTableReport').append('<tr style="text-align:center;"><td style="width:6.8%"><span><input name="qid" type="checkbox" value="' + response[i].Question_id + '" style="margin-left: 5%;"/>&nbsp&nbsp&nbsp<label for="qid">' + response[i].Question_id + '</label></span></td><td style="width:20.77%">' + response[i].Question + '</td><td style="width:9.3%">' + response[i].opt1 + '</td><td style="width:9%">' + response[i].opt2 + '</td><td style="width:9%">' + response[i].opt3 + '</td><td style="width:9.8%">' + response[i].opt4 + '</td><td style="width:9.1%">' + response[i].correct + '</td><td style="width:17.3%">' + response[i].explain + '</td><td style="width:5%" onclick="edit('+response[i].Question_id+')"> <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span></td><td style="width:5%" onclick="deletee('+response[i].Question_id+')"> <span class="glyphicon glyphicon-trash" aria-hidden="true"></span></td></tr>');
                }         
         }
         });

我从服务器获得响应但在行var response = $.parseJSON(data);处执行终止。我很困惑为什么parseJSON(数据);不工作?

2 个答案:

答案 0 :(得分:2)

如果您更改了您的PHP代码,以便它返回 json 而不是文本,那么您不需要解析返回的数据({{1 })。那么下面的代码可能适用于这种情况:

var response = $.parseJSON(data);

在上面的代码中,$.ajax({ type: "GET", url: "sall.php" , dataType: "json", success : function(data) { // this works with the original js data $.each(data.js, function(index, item) { // the two lines below are for testing, you can replace // those with your $('.dataTableReport').append code console.debug(item[0]) console.debug(item[1]) }); } }); 已更改为dataType,并使用了jQuery的$.each方法。我制作了一个JSFiddle,它显示了json如何遍历你的json项目。以下是类似Stackoverflow问题类型的链接:Iterating through JSON within a $.ajax success

答案 1 :(得分:0)

更新行

for (i = 0; i < response.length; i++)

for (i = 0; i < response['js'].length; i++)

并替换

response[i] -> response['js'][i]

在html追加流程中。

其他选择是替换行:

response = $.parseJSON(data);

response = $.parseJSON(data)['js'];
相关问题