Javascript爆炸问题

Dar*_*ney 0 javascript jquery

我正在运行ajax查询并返回JSON,其中一个结果是一个名为image.commenteg 的字段

test~63~Dave Sanders~http://graph.facebook.com/998433599/picture?type=large~Dave Sanders~9 minutes ago
Run Code Online (Sandbox Code Playgroud)

~用作分隔符

可能有多个类似的数据集由----in 分隔,image.comment因此要解析数据并将其添加到我正在使用的DOM中:

if(image.comment){

        html += '<div class="msgs_holder'+image.list_id+'">';

        // split comment at ----        
        var comString = image.comment;
        var comArray = comString.split("----");

        var lengthArray = comArray.length,
        element = null;

        for (var i = 0; i < lengthArray; i++) {
            element = comArray[i];

            // split indiv comment at ~     
            var comUserString = element;
            var comUserArray = comUserString.split("~");

            html += '<div class="msgs_row"><div class="msgs_pic"><a href="/'+comUserArray[4]+'"><img src="'+comUserArray[3]+'"></a></div>';
            html += '<div class="msgs_comment"><a href="/'+comUserArray[4]+'" style="text-decoration:none;"><span class="msgs_name">'+comUserArray[2]+'</span></a> '+comUserArray[0]+'<br><span class="msgs_time" title="'+comUserArray[5]+'">'+comUserArray[5]+'</span></div></div>';

        }

        html += '</div>';

    }
Run Code Online (Sandbox Code Playgroud)

但页面无法加载,firefox firebug告诉我: allocation size overflow

这只是发生在JSON行那里是在数据comment

我怀疑有些可能无限循环但看不到它

我检查了查询,它运行正常,所以不是这样

这是在js中爆炸的最佳方式吗?

有任何想法吗?

更多信息我这样做的原因是它是一个更大的查询.图像加载到每个图像下带有注释的页面.所以我将注释加载到要解析显示的列中.

例:

Image 1        Image 2        Image 3                       etc etc etc
hey                           i think its great!
hey back!                     me too
                              I'm not sure
Run Code Online (Sandbox Code Playgroud)

更多信息2此数据来自MySQL查询,例如

select w.img_width, w.img_height, w.prod_pic_url as preview3,
        GROUP_CONCAT(ww.comment,'~', h.user_id,'~', h.name,'~', 
        h.live_prof_pic,'~', h.twovo_url,'~', time_ago(ww.dateadded) SEPARATOR '----') AS comment 
        from tableName where blah=blah
Run Code Online (Sandbox Code Playgroud)

GROUP_CONCAT是上面提到的评论部分

因此,要将JSON用于数据中的数据,这可能吗?如果是这样的话?

示例返回数据:

"preview3":"http:\/\/myurl.com\/wish_images\/production\/3578.jpg","comment":"test~63~Dave Sanders~http:\/\/graph.facebook.com\/Dave Sanders\/picture?type=large~Dave Sanders~39 minutes ago"},{"item_id":"3559","numComms":"0","numLikes":"0"... etc etc
Run Code Online (Sandbox Code Playgroud)

Chr*_*mer 6

这不适合评论,因此我将尝试编写我认为人们在使用JSON而不是字符串方面所说的内容:

这个:

test~63~Dave Sanders~http://graph.facebook.com/998433599/picture?type=large~Dave Sanders~9 minutes ago
Run Code Online (Sandbox Code Playgroud)

可能成为这样:

[
    {
        'name': 'test',
        'id': 63,
        'name': 'Dave Sanders',
        'url': 'http://graph.facebook.com/998433599/picture?type=large',
        'when': '9 minutes ago'
        // other properties
    },
    {
        // the next one
    },
    {
        // etc.
    }
]
Run Code Online (Sandbox Code Playgroud)

它可能看起来更多的工作,但你可以使用一些JSON库的PHP(我猜,因为你使用术语"爆炸")在服务器上构建JSON.然后,您返回的内容已经在基于浏览器的客户端应用程序的表单中,无需额外工作即可使用.我发现很难想象这最终会比你尝试用字符串操作做更多的工作,并且JSON可能不那么脆弱.