我正在使用ajax来获取用户在“选择”框中选择的内容并将其发送到php文件。然后我需要使用这些选择结果可以下载查询结果。所以重申一下,当他们点击某些内容时,jquery / ajax会将其发送给php。 php返回一个列表,供他们再次选择,直到他们选择了五个选项。然后,在选择框下方会出现一个链接,说明导出(下载)。该链接应该将它们发送到php函数export()以及一个说我需要导出的存储过程名称。连同5个选择结果作为存储过程中的参数。希望有道理。这是我的代码。
PHP将结果发送到js文件-------
$jsStr = '[';
if ($query->num_rows() > 0) {
foreach ($query->result() as $row) {
$jsStr .= '["'. $row->count_result .'","'. $row->count_desc .'","'. $row->count_SP .'",'. $cn .','. $gp .','. $co .','. $st .','. $dp .']';
}
$jsStr = substr($jsStr,0,-1);
}
$jsStr .= ']';
return 'changeResults('. $jsStr .');';
JS ----------------
function changeResults (data) {
$('#systems').html(data[0][0] +' - '+ data[0][1] +' <a href="http://95.211.130.165:8080/index.php/discovery/export?sp='+ data[0][2] +'&cn='+ data[0][3] +'&gp='+ data[0][4] +'&co='+ data[0][5] +'&st='+ data[0][6] +'&dp='+ data[0][7] +'">Export</a>');
$('#users').html(data[1][0] +' - '+ data[1][1] +' <a href="http://95.211.130.165:8080/index.php/discovery/export?sp='+ data[1][2] +'&cn='+ data[1][3] +'&gp='+ data[1][4] +'&co='+ data[1][5] +'&st='+ data[1][6] +'&dp='+ data[1][7] +'">Export</a>');
}
我从萤火虫得到的错误
元素列表后缺少] [打破此错误]
... NV02) - 在选定范围内计算的用户“,”usr_disc_Inv_usr_content“,1,1,1,1,1])
如果有什么不清楚,请告诉我,谢谢!
答案 0 :(得分:4)
让我们清理一下这个!
$jsArr = array();
if ($query->num_rows() > 0) {
foreach ($query->result() as $row) {
$jsArr[] = array(
$row->count_result,
$row->count_desc,
$row->count_SP,
$cn,
$gp,
$co,
$st,
$dp,
);
}
}
$jsStr = json_encode($jsArr);
return 'changeResults('. $jsStr .');';
答案 1 :(得分:3)
该行:
$jsStr = substr($jsStr,0,-1);
您要从字符串末尾删除]
。这就是原因。不知道为什么那条线在那里。
答案 2 :(得分:3)
我真的不知道JavaScript或你使用的任何东西。但它看起来好像你删除了]
中添加的最后一个foreach loop
$jsStr = substr($jsStr,0,-1);
我认为你在foreach
的行尾有一个逗号。像这样:
foreach ($query->result() as $row) {
$jsStr .= '["'. $row->count_result .'","'. $row->count_desc .'","'. $row->count_SP .'",'. $cn .','. $gp .','. $co .','. $st .','. $dp .'],';
}
这样对我来说更有意义。要使包围正确,您必须重新添加此逗号(我认为这是正确的表示法)或删除substr
操作。