1

配列を含む非表示の入力タイプをjquery load(function)に送信しようとしていますが、機能させるのに問題があります

table_planner.php

foreach($category->result() as $c){
    <input type="hidden" name="tname[]" id="tname[]" value="<?php echo $c->name;?>" />
}

<div id="planner">
<!--load content goes here-->
</div>

script.js

var tname = $("#tname").val();
console.log(tname);
$('#planner').load(base+"site/table_planner/"+tname)

コントローラ

public function table_planner($tname="")
{
    if($tname){
    $data['category'] = $this->site_model->get_category();
    }
    else{
    $data['category'] = $tname;
    }

    $this->load->vars($data);
    $this->load->view("site/ajax/table_planner");   
}

私がしたいことは

  1. table_planner.php から - ID tname[] の非表示入力の値が script.js に送信されます
  2. script.js から、変数 tname がコントローラーの table_planner に送信されます

この問題は、script.js が非表示の入力値の値を取得できないことから始まります。これは、console.log(tname) が未定義であると言っているためですが、table_planner.php でその値をエコーアウトすると、値が含まれています。

これを行う方法はありますか?

4

1 に答える 1

1

何のtname[]ために?

あなたのhtmlのIDは次のtname[]とおりです。

<input type="hidden" name="tname[]" id="tname[]" ...

しかし、あなたのjsには#tname

var tname = $("#tname").val();
console.log(tname);

idhtml を次のように変更しtnameます。

<input type="hidden" name="tname[]" id="tname" value="<?php echo $c->name;?>" />


配列全体を渡すための更新

$tname = '';
foreach($category->result() as $c){
   $tname .= '&tname[]=' . $c;
}
// $tname will be like &tname[]=cake&tname[]=food...

html に設定します。

<input type="hidden" name="tname" id="tname" value="<?php echo $tname;?>" />

jsで、URLを呼び出しますbase+"site/table_planner/"

var tname = $("#tname").val();
console.log(tname);
$('#planner').load(base+"site/table_planner/?"+tname)

urlbase+"site/table_planner/"には、リクエストを処理するための php ファイルが必要です。

var_export($_GET);

tnameが配列であることがわかります。

于 2013-09-23T03:03:42.413 に答える