您好我正在通过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 ...
答案 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, ' ') );
请注意,使用此正则表达式替换比执行多个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)
您应该可以使用split
和for
来执行此操作:
$.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
在客户端上处理它。