2012-04-12 6 views
2

私はajaxを使用して、ユーザーが「選択」ボックスで選択した内容を取得し、それをPHPファイルに送信しています。次に、これらの選択結果を持つクエリの結果をダウンロード可能にする必要があります。だから、ちょうど繰り返して、何かをクリックするとjquery/ajaxがPHPに送ります。 phpは、それらが再び選択するためのもののリストを返します。これは5つのオプションを選択するまで発生します。次に、選択ボックスの下に、エクスポート(ダウンロード)というリンクが表示されます。そのリンクは、エクスポートする必要があるストアドプロシージャ名を取得するとともに、それらをphp関数export()に送信する必要があります。ストアドプロシージャのパラメータとしての5つの選択結果と一緒に。それは意味をなさないことを望む。ここに私のコードです。要素リストエラー後のエラー

のjsファイルに結果を送信するPHP -------

$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>'); 
} 

エラーI )...

[このエラーのブレーク]要素リスト 後]行方不明放火犯

からNV02を取得する - 選択SCOPでカウントユーザーe "、" usr_disc_Inv_usr_content "、1,1,1,1,1])

不明な点がある場合はお知らせください。

+0

1)PHPによって生成された文字列の値、または2)PHP内で文字列を作成するために使用された各列の値です。 –

+0

文字列または列の値はどういう意味ですか? –

+0

エンコード全体が純粋なPHPよりもはるかに速いので、['json_encode()'](http://php.net/json_encode)を検討する必要があります。 – rid

答えて

3

私は実際にJavaScriptなどを使用していません。あなたは私はあなたがforeachの行の末尾にカンマを持っていたと思います

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

によってforeach loop以内に添加最後]を削除するかのようにしかし、それは私には見えます。このように:

foreach ($query->result() as $row) { 
    $jsStr .= '["'. $row->count_result .'","'. $row->count_desc .'","'. $row->count_SP .'",'. $cn .','. $gp .','. $co .','. $st .','. $dp .'],'; 
} 

それは私にはもっと意味があります。正しいブラケットを取得するには、このコンマを追加するか(正しい記法だと思います)、またはsubstr操作を削除する必要があります。

+0

@ dylanがjson_encode/decodeを使用するとidが良くなるでしょう、私の2セント –

+0

あなたは私の友人は紳士と学者です。私はjsonが何であるか知りませんが、それはコンマでした。私はそれを誤って削除したに違いない。ありがとうzpea –

+0

ええ、おそらく。ジョーフラムバッハの答えはきれいに見えます。基本的にこれはDylanの現在の実装のための迅速な修正です。ジョーの答えは彼が実際に使うべきものです。 – zpea

3

ライン:

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

あなたは、文字列の末尾から]を削除しています。それが理由です。なぜその行がそこにあるのか分かりません。

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 .');'; 
+0

ええ、それは良いですね。しかし、私は '$ dpにあまりにも多くのカンマがあると思います(?) – zpea

+0

OK、私はPHPが違うと思っています:) – zpea

+1

後ろのコンマはPHPで許されています。個人的に、私はそれが好きです。最後の行をコメントアウトするか、新しい要素にすばやくコピー・ペーストするとします。コンマがあると、これはリストであり、コンマを追加することを思い出させるためのものです。 –

関連する問題