【问题标题】:Codeigniter form serialize not workingCodeigniter 表单序列化不起作用
【发布时间】:2017-02-12 03:11:13
【问题描述】:

我正在尝试将数据从表单传递到 codeigniter 中的控制器...但是当我想打印带有结果的表格时...我在表格的每一行上都为空。这是我的代码:

形式

<form class="col s12" id="update_form" name="update_form" method="post" >
      <div class="row">
        <div class="input-field col s6">
          <input id="update_name" type="text" name="name" class="validate">
          <label for="first_name">Nombre</label>
        </div>
        <div class="input-field col s6">
          <input id="update_last_name" name="lastname" type="text" class="validate">
          <label for="last_name">Apellido</label>
        </div>
      </div>
      <div class="row">
        <div class="input-field col s6">
          <input id="update_side" type="text" name="side" class="validate">
          <label for="partido">Partido</label>
        </div>
        <div class="input-field col s6">
          <input id="update_charge" type="text" name="charge" class="validate">
          <label for="cargo">Cargo</label>
        </div>
      </div>
        <div class="row">
            <div class="input-field col s6">
               <div class="file-field input-field no-margin-top">
                  <div class="btn light-blue darken-4">
                    <span>Animación</span>
                    <input type="file">
                  </div>
                  <div class="file-path-wrapper">
                    <input class="file-path validate" name="animation" type="text">
                  </div>
                </div>
            </div>

            <div class="input-field col s6">
            <select id="update_section" name="section" autocomplete="off">
              <option value="" disabled selected>Seleccione una opción</option>
              <option value="1">Presidencia</option>
              <option value="2">Senadores</option>
              <option value="3">Diputados</option>
            </select>
            <label>Sección</label>
          </div>
        </div>
        <input type="hidden" name="update_politic_hide" id="update_politic_hdn" value="">
    </form>

jQuery

$("#update_politic_btn").click(function(event) {
    /* Act on the event */

    var chango = $("#update_form").serialize();
    alert(chango);
    $.post(baseurl + 'admin/update_politic', {
            data: chango
        },
        function(data) {
            console.log(data);
            list_politic();
        });
    event.preventDefault();
});

控制器

public function update_politic(){

  if ($this->input->is_ajax_request()) {


  $params["name"] = $this->input->post("name");
  $params["lastname"] = $this->input->post("lastname");
  $params["side"] = $this->input->post("side");
  $params["charge"] = $this->input->post("charge");
  $params["animation"] = $this->input->post("animation");
  $params["section"] = $this->input->post("section");
  $params["id"] = $this->input->post("update_politic_hide");

  if ($params["section"]=="Presidencia") {
      $params["section"]=1;
  }

  if ($params["section"]=="Senadores") {
      $params["section"]=2;
  }

  if ($params["section"]=="Diputados") {
      $params["section"]=3;
  }

  $this->load->model("politic");
  $this->politic->update($params);
}
}

型号

public function update($param){

  $id = $param["id"];
    $values = array(

                    "POLITIC_NAME" => $param["name"],
                    "POLITIC_LASTNAME" => $param["lastname"],
                    "POLITIC_SIDE" => $param["side"],
                    "POLITIC_CHARGE" => $param["charge"],
                    //"animation" => $param["animation"],
                    "SECTION_ID" => $param["section"],
                    );


    $this->db->update("politics",$values);
  $this->db->where("POLITIC_ID",$id);
}

帮助!!!我不明白为什么一旦我想要打印结果就会得到空值!!

【问题讨论】:

  • 你在 ajax 调用中返回什么?
  • 您是否在alert(chango); 中获取值?
  • @BarneyStinson 是的...此时所有值都正确...
  • @madalinivascu ...没什么...我只是将数据放在函数中...但我只想在数据库中更新此值.....list_politic 函数从数据库中加载内容跨度>

标签: javascript php jquery codeigniter serialization


【解决方案1】:

你的 where 条件应该首先出现,

public function update($param){
   $id = $param["id"];
   $values = array(
      "POLITIC_NAME" => $param["name"],
      "POLITIC_LASTNAME" => $param["lastname"],
      "POLITIC_SIDE" => $param["side"],
      "POLITIC_CHARGE" => $param["charge"],
       //"animation" => $param["animation"],
       "SECTION_ID" => $param["section"],
   );
   $this->db->where("POLITIC_ID",$id);
   $this->db->update("politics",$values);
}  

如果您的 list_politic(); 代码不起作用,请向我们展示您的代码。

如果您使用serialize(),我认为您传递数据的方式不正确,然后直接在$.post 中使用它,

$.post(baseurl + 'admin/update_politic',chango,function(data) {
   console.log(data);
   list_politic();
});

【讨论】:

  • list_politic 是一个从数据库加载表格内容的函数......它工作得很好! ...我尝试了你的答案,仍然得到同样的空错误
  • 我认为数据没有正确传递,试试我更新的答案。
  • 是啊!!!有用!! ......这就是问题!谢谢你应该获得格莱美奖!哈哈
  • 很高兴看到它有效,但您应该修改模型的 update 函数,其中应首先出现 where 条件,然后调用 db update()
猜你喜欢
  • 2013-03-21
  • 2016-01-26
  • 2015-04-17
  • 1970-01-01
  • 2014-07-22
  • 2016-07-05
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
相关资源
最近更新 更多