元素列表错误后缺少]

时间:2012-04-12 17:57:50

标签: php jquery ajax

我正在使用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])

如果有什么不清楚,请告诉我,谢谢!

3 个答案:

答案 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操作。