【问题标题】:Error: Undefined variable json错误:未定义的变量 json
【发布时间】:2017-07-30 03:13:12
【问题描述】:

按国家/地区获取州

我创建了三个选项框来选择地区、州和国家。问题是国家运作良好,但是当我想获得城市和地区时,在我使用的其他脚本中给我错误的未定义变量是有效的。

未定义变量:country_id

控制器

public function get_city()
{   
    $this->load->model('cities_model');
    header('Content-Type: application/json');

    $country_id = $country_id?$country_id:$this->input->post('country_id');
    if($country_id) 
    echo json_encode($this->cities_model->get_city());
}

型号

public function get_city($country_id = 0){
    return 
    $this->db->select('name as text, city_id as value')
            ->where('country_id', $country_id)
            ->get('cities')
            ->result();
 }

查看

<li>
                            <label class="form-label required">Country</label>
                            <div class="form-item">
                                <select class="selectpicker" name="country_id" data-url="/admin/events/get_countries" data-select="city-1" data-select-group="1" required></select>
                            </div>
                        </li>   
                        <li class="hide" data-select-group="1" data-select-sub="city-1">
                            <label class="form-label required">City</label>
                            <div class="form-item">
                                <select class="selectpicker" name="city_id" data-url="/admin/events/get_city" data-select="area-1" required></select>
                            </div>
                        </li>                                    
                        <li class="hide" data-select-group="1" data-select-sub="area-1">
                            <label class="form-label required">Area</label>
                            <div class="form-item area_id">
                                <select class="selectpicker" name="area_id" data-url="/admin/events/get_area" required></select>
                            </div>
                        </li>

【问题讨论】:

  • 不确定您没有发布的控制器中的函数是否还有其他内容,但错误似乎很明显:您在定义变量 $country_id 之前对其进行了测试。
  • 使用 isset($country_id) 检查变量在使用前是否已设置。
  • 我们能看到表单标签吗?此外,您没有将 country_id 传递给模型函数 get_cities。另一件事...... $country_id 变量没有在任何地方初始化。所以你的 iif 语句可能很混乱。

标签: php json ajax codeigniter


【解决方案1】:

在我看来这应该足够了:

public function get_city()
{   
    $this->load->model('cities_model');
    header('Content-Type: application/json');

    $country_id = $this->input->post('country_id');
    if(isset($country_id) && $country_id) {
        echo json_encode($this->cities_model->get_city());
    }
}

【讨论】:

  • 同样的错误未定义
  • 错误来自哪里,控制器还是模型?我认为这不会导致您的错误,但您不应该将 $country_id 传递给$this-&gt;cities_model-&gt;get_city()吗?
  • 来自控制器的
  • 控制器的哪一行?我进行了编辑,因为我缺少一个大括号,但代码不应该以任何方式在控制器中生成未定义的变量错误。
【解决方案2】:

试试这个

$id = $this->input->post('country_id')

$country_id = $this->load->model('cities_model',$id);

【讨论】:

  • 意外的国家/地区 ID
  • 你能用这个 print_r($this->input->post('country_id')) 检查你的帖子吗
【解决方案3】:

在你的控制器中试试这个

$country_id = $this->load->model('cities_model',$country_id);

【讨论】:

  • 同样的错误未定义
猜你喜欢
  • 2011-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-25
  • 2018-05-03
  • 2014-04-25
相关资源
最近更新 更多