php - 我的 jQuery 每个函数都将额外的一行显示为未定义

标签 php jquery html mysql json

我正在使用 $.getJSON 和每个函数将 json 数据显示到 html div 中。我的警报显示正确的数据,但在将其发布到 html 主页后,它显示一个额外的 div 作为未定义的值。

这是我的截图和代码

alert

html div

$.getJSON(url,function(data) {

                            if(data){
                                alert("hey got the data"+JSON.stringify(data));
                                 var arr = data.length;

                                 //for(var i=0 ;i<arr; i++){

                                   $.each(data, function(i,element) {
                                        $("#postjson").append(  
                                            '<div id="'+element.id+'">'
                                            +'<p>'
                                            +'FirstName:'+element.FirstName+'<br/>'

                                            +'MiddleName:'+element.MiddleName+'<br/>'
                                            +'LastName:'+element.LastName+'<br/>'
                                            +'Gender:'+element.Gender+'<br/>'
                                            +'Location:'+element.Location+'<br/>'
                                            +'Email:'+element.Email+'<br/>'
                                            +'Mobile:'+element.Mobile+'<br/>'
                                            +'</p>'
                                            +'</div>'
                                        );
                                    });
                                   }
                            else {
                                return;             
                            }

                        // once we've loaded
                        // kill the loading stuff
                        ListingCountPage++;
                        loading = false;
                        $(".loading").remove();

                        });
                    }


            $(function() {
            loadData();
        $(window).scroll(function(){

                if  ($(window).scrollTop() == $(document).height() - $(window).height()){
                    // add the loading box
                    if(loading == false){
                        loading = true;
                        $("#postjson").append("<div class='loading'>Loading...</div>");
                        loadData();
                    }

                }
        }); 


      });
            </script>

            <div class="grid" id="postjson">
            </div> 

这是怎么造成的,我该如何解决?

最佳答案

根据图像中显示的数据,数组中有两个元素。使用 $.each() 进行迭代时,第二次迭代采用第二个元素,该元素未定义这些属性,因此它将附加第二个 div 值作为未定义。


如果您只想追加数组中的第一个元素,则无需在此处使用 $.each(),只需获取第一个元素并基于该对象即可。

var element = data[0];

$("#postjson").append(
  '<div id="' + element.id + '">' + '<p>' + 'FirstName:' + element.FirstName + '<br/>' + 'MiddleName:' + element.MiddleName + '<br/>' + 'LastName:' + element.LastName + '<br/>' + 'Gender:' + element.Gender + '<br/>' + 'Location:' + element.Location + '<br/>' + 'Email:' + element.Email + '<br/>' + 'Mobile:' + element.Mobile + '<br/>' + '</p>' + '</div>'
);


或者,如果您想从数组中追加多个元素,则添加一个 if 条件来检查这些属性是否已定义。

关于php - 我的 jQuery 每个函数都将额外的一行显示为未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37360432/

相关文章:

Javascript/JQuery 填充数组许多元素

javascript - Angular js 如果条件不起作用

html - 调整手机网站的图片大小

php - 限制 dbal 上的 sql 结果

php - 如何在php中使用命名空间类

jQuery .load() 不适用于我的图像

javascript - 单击工具提示内的标签

javascript - 如何更改 TinyMce 编辑器中的默认字体调色板?

php - CakePHP 中的 Feeds 错误返回 "Invalid xml declaration"

php - 高级自定义字段 (ACF) Wordpress 中的按价格排序