我有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>');
        }
    }
});


表中的所有字段都用“ undefined”填充

如何解析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(data);不管用?

最佳答案

如果更改php代码,使其返回json而不是文本,则无需解析返回的数据(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更改为json,并使用了jQuery的$.each方法。我做了一个JSFiddle,显示了$.each如何遍历您的json项。这是类似类型的Stackoverflow问题的链接:Iterating through JSON within a $.ajax success

07-24 09:50