无法在 codeigniter 中提交数据

Posted

技术标签:

【中文标题】无法在 codeigniter 中提交数据【英文标题】:cannot submit data in 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()); 【参考方案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",

以上是关于无法在 codeigniter 中提交数据的主要内容,如果未能解决你的问题,请参考以下文章

在 CodeIgniter 4 中提交表单后重定向页面无法工作

无法在数据库 PHP、Codeigniter 中搜索现有值

在 Codeigniter 中提交或更新任何内容后不显示更新的数据

在 codeigniter 中提交一次后,在每次刷新时停止表单提交

尝试在codeigniter中使用ajax提交表单

CodeIgniter 和 AJAX 表单提交