Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的JavaScript for循环有问题吗_Javascript_Php_Json_For Loop - Fatal编程技术网

我的JavaScript for循环有问题吗

我的JavaScript for循环有问题吗,javascript,php,json,for-loop,Javascript,Php,Json,For Loop,我试图循环返回的JSON数组,并在表中显示值。我的数组包含多个具有多个值的对象,因此每个对象将=一个新行,每个值将=一个新单元格 以下是我尝试过的一个版本: function refreshUrlArray(urlsRetrieved) { $('#response').html('Attempting to update your URLs, please wait...'); var urlsObj = urlsRetrieved; console.log("JSO

我试图循环返回的JSON数组,并在表中显示值。我的数组包含多个具有多个值的对象,因此每个对象将=一个新行,每个值将=一个新单元格

以下是我尝试过的一个版本:

function refreshUrlArray(urlsRetrieved) {
    $('#response').html('Attempting to update your URLs, please wait...');

    var urlsObj = urlsRetrieved;
    console.log("JSON results returned from DB query: " + urlsObj);

    //Create object holding table
    $table = "<table id='urlTable'><td>Name</td><td>Release Time</td><td>Release Date</td><td>Category</td><td>Genre</td><td>URL</td>";

    //debugging (loop count)
    var c = 0;

    for (var key in urlsObj) {
        if (urlsObj.hasOwnProperty(key)) {

            var val = urlsObj[key];

            $table += "<tr>";

            $table + "<td>" + val.name; + "</td>";
            $table + "<td>" + val.releaseTime; + "</td>";
            $table + "<td>" + val.releaseDate; + "</td>";
            $table + "<td>" + val.category; + "</td>";
            $table + "<td>" + val.genre; + "</td>";
            $table + "<td>" + val.url; + "</td>";

            $table += "</tr>";

            //debugging (loop count)
            c++;
            console.log("Count: " + c);
        }
    }

    $('#response').html('Attempting to display your URLs, please wait...');
    $('#content01').append($table);

};

您的问题在于JSON解析

首先这样做:这将把JSON字符串对象转换为Javascript对象,您可以在其中循环

var items = JSON.parse('[{"userId":4,"name":"Doctor Who","releaseTime":"2015-11-22 12:45:24","releaseDate":"Monday","category":"Television","genre":"Action","url":"http:\/\/www.netflix.com\/browse?jbv=70142441&jbp=0&jbr=1"},{"userId":4,"name":"Game Of Thrones","releaseTime":"2015-11-22 13:34:06","releaseDate":"Tuesday","category":"Television","genre":"Drama","url":"http:\/\/www.tvmuse.com\/tv-shows\/Game-of-Thrones_25243\/"}]');
那么,做这个

for(i=0; i<items.length; i++){
    console.log(items[i].url);
    console.log(items[i].name); //etc
}
for(i=0;i将脚本更改为:

function refreshUrlArray(urlsRetrieved) {
    $('#response').html('Attempting to update your URLs, please wait...');  

    var urlsObj = urlsRetrieved;

    var details = JSON.parse(urlsObj);

    //console.log(details.length);

    table = "<table id='urlTable'><td>Name</td><td>Release Time</td><td>Release Date</td><td>Category</td><td>Genre</td><td>URL</td>";
    for(var i = 0; i < details.length; i++){
        records = details[i];
        //Create object holding table
        table += "<tr>";

        table += "<td>" + records.name; + "</td>";
        table += "<td>" + records.releaseTime; + "</td>";
        table += "<td>" + records.releaseDate; + "</td>";
        table += "<td>" + records.category; + "</td>";
        table += "<td>" + records.genre; + "</td>";
        table += "<td>" + records.url; + "</td>";

        table += "</tr>";

    }
    table += "</table>";

    $('#response').html('Attempting to display your URLs, please wait...');  
    $('#content01').html(table);
}
函数refreshUrlArray(urlsRetrieve){
$('#response').html('正在尝试更新您的URL,请稍候…);
var urlsObj=urlsRetrieved;
var details=JSON.parse(urlsObj);
//控制台。日志(详细信息。长度);
table=“NameRelease TimeRelease DateCategoryGeneurl”;
对于(变量i=0;i
您需要解析JSON字符串。使用JSON.parse解析JSON后,如下所示

var items = JSON.parse(json_response);
您正在添加字符串,但没有将其分配到
$表

更换回路内的管路,如下所示

$table += "<td>" + urlsObj[i].name; + "</td>";
$table += "<td>" + urlsObj[i].releaseTime; + "</td>";
$table += "<td>" + urlsObj[i].releaseDate; + "</td>";
$table += "<td>" + urlsObj[i].category; + "</td>";
$table += "<td>" + urlsObj[i].genre; + "</td>";
$table += "<td>" + urlsObj[i].url; + "</td>";
$table+=“”+urlsObj[i]。名称;+“”;
$table+=“”+urlsObj[i]。释放时间;+“”;
$table+=“”+urlsObj[i].发布日期;+“”;
$table+=“”+urlsObj[i]。类别;+“”;
$table+=“”+urlsObj[i]。流派;+“”;
$table+=''+urlsObj[i].url;+'';

“据我所知,我认为循环对JSON结果中的每个字符循环一次”在这种情况下,您还没有将JSON解析为JavaScript数组。请参阅“据我所知,我认为…”-为什么要猜测?学习使用调试器并了解问题所在。如果使用数组访问器(如val[“name”])访问成员,…?与您的问题无关,只是一个小提示。您当然可以随意命名变量,但与jQuery结合使用时,我将仅对实际包含jQuery对象/结果集的变量使用
$
前缀变量,而不是简单的html字符串。谢谢t.niese,我会记住这一点!谢谢mate这很有帮助,正如大多数人指出的那样,我没有将JSON解析为JS数组……仍在学习的家伙们,没有意识到我的错误。
var items = JSON.parse(json_response);
$table += "<td>" + urlsObj[i].name; + "</td>";
$table += "<td>" + urlsObj[i].releaseTime; + "</td>";
$table += "<td>" + urlsObj[i].releaseDate; + "</td>";
$table += "<td>" + urlsObj[i].category; + "</td>";
$table += "<td>" + urlsObj[i].genre; + "</td>";
$table += "<td>" + urlsObj[i].url; + "</td>";