如何将变量内部的结果分成几行,并为每一行做foreach

时间:2012-09-02 12:47:10

标签: jquery

您好我正在通过Ajax abit编写一个搜索系统,我有一个问题,是否有可能通过ajax中断数据获取并为javascript中的每一行执行 foreach

在这里,我将用户的搜索查询发送到一个php文件,该文件从该数据库中返回该查询的结果。

    $.post("rpc.php", {queryString: ""+inputString+""}, function(data) { 


        $('#suggestions').html(data); // Fill the suggestions div
    });

所以来自php文件的数据作为一个集合存储在 data 变量中,但是逐行存储,例如..

Google helps us
Facebook is a social network
Stackoverflow is the best
Im on twitter

但是

$('#suggestions').html(data);

会直接将数据中的所有内容放到建议html元素..

我想知道是否可以将数据内的内容分解为行,并为每行执行 foreach ...

3 个答案:

答案 0 :(得分:1)

data拆分为<br />,然后迭代生成的行数组:

var lines = data.split("<br />");
var $suggestions = $("#suggestions");
for (var i = 0; i < lines.length; i++) {
  var line = lines[i];
  // ...
}

答案 1 :(得分:0)

您可以摆脱换行符,以便渲染的html全部在一行中:

$('#suggestions').html( data.toString().replace(/\<br \/\>/g, ' ') );

Working demo of this code

请注意,使用此正则表达式替换比执行多个DOM操作操作或字符串连接更有效。

<小时/> 为了完整性,这也可以使用for循环,虽然效率低且不必要:

var arr = data.toString().split("<br />");
var text = '';

for (var i = 0; i < arr.length; i++ ) {
    text += ' ' + arr[i];
}

$('#suggestions').html( text );

答案 2 :(得分:0)

您应该可以使用splitfor来执行此操作:

$.post("rpc.php", {queryString: ""+inputString+""}, function(data) { 
    var lines = data.split("\n");
    for(var i = 0; i < lines.length; i++) {
        // Do something with each line
    }
});

您可能还想尝试将数据作为JSON数组发送,然后使用$.getJSON在客户端上处理它。