2

私はajaxを使用して、ユーザーが「選択」ボックスで選択したものを取得し、それをphpファイルに送信しています。次に、クエリの結果とそれらの選択結果をダウンロードできるようにする必要があります。繰り返しになりますが、クリックするとjquery/ajaxがphpに送信します。phpは、再度選択できるもののリストを返します。これは、5つのオプションを選択するまで行われます。次に、選択ボックスの下に、export(download)というリンクが表示されます。そのリンクは、エクスポートする必要のあるストアドプロシージャ名を取得するとともに、それらを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])

不明な点があれば教えてください、ありがとう!

4

3 に答える 3

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 .');';
于 2012-04-12T18:21:39.407 に答える
3

この線:

$jsStr = substr($jsStr,0,-1);

]文字列の末尾からを削除しています。それが理由です。その線がそこにある理由がわかりません。

于 2012-04-12T18:15:36.350 に答える
3

JavaScriptやあなたが使っているものは本当に知りません。しかし、 by]内に最後に追加されたものを削除したように見えます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操作を削除する必要があります。

于 2012-04-12T18:16:23.920 に答える