无法在 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 中提交表单后重定向页面无法工作
在 Codeigniter 中提交或更新任何内容后不显示更新的数据