将隐藏的输入数组传递给 jQuery load()


pass a hidden input array to jquery load()

im 试图将包含数组的隐藏输入类型发送到我的 jquery load(函数),但是我无法使其工作

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>

脚本.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. from table_planner.php - ID 为 tname[] 的隐藏输入的值将发送到我的脚本.js
  2. 从脚本.js变量 tname 将被发送到我的控制器中的table_planner

问题从我的脚本开始.js无法获取我的隐藏输入值的值,因为 console.log(tname) 说它未定义,但如果我在 table_planner.php 中回显出它的值,它包含一个值

有没有办法做到这一点?

tname[]干什么?

您的 html 中的 id 是 tname[]

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

但是在您的JS中#tname

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

将 html 中的id更改为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)

在 URL base+"site/table_planner/" 中,必须有一个 PHP 文件来处理请求:

var_export($_GET);

您将看到tname是一个数组。