【问题标题】:cannot submit data in codeigniter无法在 codeigniter 中提交数据
【发布时间】:2018-07-04 07:35:16
【问题描述】:

我正在尝试在 codeigniter 中使用此代码提交数据,但无法提交数据并创建错误。

错误:POST http://localhost/managment/index.php/welcome/add 500(内部服务器错误)

signupform 是我的注册表单的 ID,它包含 6 个字段并有一个提交按钮

ajax 我用 .js 扩展名保存了这个文件

$(document).on("submit", "#signupform", function (e) {
    e.preventDefault();
    //var view_id=$("#id_hid").val();
    //alert(view_id);
    $.ajax({
        type: "post",

        data: $('#signupform').serialize(),
        dataType: "JSON",
        url: "../welcome/add",
        success: function (data)
        {
            //var json=$.parseJSON(data);
            alert(data);
        }
    });
});

控制器

public function add() {
    //$data=array();
    $postData = array();
    //prepare post data
    $postData = array(
        'username' => $this->input->post('username'),
        'password' => $this->input->post('password'),
        'email' => $this->input->post('email'),
        'mobileno' => $this->input->post('mobileno'),
        'address' => $this->input->post('address')
    );

    // //insert post data

    $insert = $this->home_model->insert_form($postData);
    $data['msg'] = "data insert successfully";
    echo json_encode($data['msg']);
}

型号

function insert_form($data)
{   
    $insert=$this->db->insert('emp',$data);
    if($insert)
    {
        return $this->db->insert_id();
    }
    else
    {
        return false;
    }
    //echo  json_encode($data);
}

【问题讨论】:

  • 提交时网络标签出现什么错误??
  • 您是否尝试过在控制台中显示数据??
  • @DeadManAlive 错误:jquery.min.js:4 POST localhost/managment//index.php/welcome/add 500(内部服务器错误)
  • @Prabhu 不,我不知道该怎么做
  • 在ajax之前添加这个console.log($('#signupform').serialize());

标签: codeigniter model controller


【解决方案1】:

你的 Javascript Ajax 函数

      var frmData = $('#signupform').serialize();
      $.ajax({
        type:"post",

        data:{frmData:frmData},
        dataType: "JSON",
        url:"<?php echo base_url('index.php/your_controller_name/your_function_name')?>",       
        success:function(data)
         {

          }
        });

你的控制器功能

   public function add()
   {
        $postData=array();
        parse_str($this->input->post('frmData'),$postData);

        //prepare post data
        $postData = array(
            'username' => $postData['username'],
            'password' => $postData['password'],
            'email' => $postData['email'],
            'mobileno' => $postData['mobileno'],
            'address' => $postData['address']
        );       
   }

当您在 java 脚本中使用序列化时,您必须使用 php 的 parse_str 函数检索数据,然后您将从编码字符串中获得准确的发布数据。

【讨论】:

  • 我从来不用 parse_str 处理来自 js 的序列化数据。
【解决方案2】:

正如你在错误中提到的 error: jquery.min.js:4 POST http://localhost/managment//index.php/welcome/add 你可以看到 URL 的磨损方向

怎么了

http://localhost/managment//index.php/welcome/add  
                          ^^

我该怎么办

Change url:"../welcome/add",url:"http://localhost/managment/index.php/welcome/add", `

var base = <?php echo base_url() ?>
url: base+"index.php/welcome/add"

确保

application/config.php 中的基本 URL 应为 http://localhost/managment/

阅读How do I PHP-unserialize a jQuery-serialized form?

【讨论】:

  • 你还需要检查表单序列化
  • 其发布请求更改type: "POST",
猜你喜欢
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 2016-04-03
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多