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>

脚本.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);

id将您的 html更改为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中,调用urlbase+"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 回答