1

您好,我正在通过 Ajax 编写一个搜索系统,但我遇到了一个问题,是否可以通过 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 ......

4

3 回答 3

1

拆分databy <br />,然后遍历生成的 lines 数组:

var lines = data.split("<br />");
var $suggestions = $("#suggestions");
for (var i = 0; i < lines.length; i++) {
  var line = lines[i];
  // ...
}
于 2012-09-02T12:48:46.727 回答
0

您可以去掉换行符,以便呈现的 html 全部在一行中:

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

此代码的工作演示

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


为了完整起见,这也可以通过 for 循环实现,但在这里效率较低且不必要:

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

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

$('#suggestions').html( text );
于 2012-09-02T13:00:49.480 回答
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在客户端上处理它。

于 2012-09-02T13:05:48.310 回答