这里我想将数据中的值传递给控制器,所以我给出了这样的代码。
$("#sup_box").on("submit", function (e) {
e.preventDefault();
var toPost = $('.row_selected input').serialize();
alert(toPost);
$('.submit_data').text(toPost);
$.ajax({
type: "post",
url: "<?php echo base_url();?>app/admin_control/add_data",
data: toPost,
dataType:"text",
success: function (data) {
alert("hai");
},
error: function (data) {
alert("not");
}
});
});
我的控制器看起来像这样。
public function add_data()
{
$bill_no = '000';
$data = $_POST['data'];
var_dump($data);
$data1 = json_decode($data,true);
var_dump($data1);
foreach($data1 as $r) {
$data = array('user_id'=>1,'bill_no'=>$bill_no);
$this->Admin_model->add_data($data);
}
}
但是当我进入控制器时,我在控制台
中收到undefined index data
这样的错误
我的toPost
变量包含这样的值
add_type%5B%5D=super&add_number%5B%5D=324&add_quantity%5B%5D=44&add_amount%5B%5D=440.00&add_checkbox=1&add_profit%5B%5D=440.00&add_agent_amount%5B%5D=0.00
答案 0 :(得分:1)
如果此处提及的submit_data是表单字段
$('.submit_data').text(toPost);
尝试通过
获取数据$data = $_POST['submit_data'];
答案 1 :(得分:1)
序列化基本上是这样的:
data: {
'field_name_1': 'field_value_1',
'field_name_2': 'field_value_2',
}
并且:field_name_1=field_value_1&field_name_2=field_value_2
而不是你必须手动构建它^它为你做。因此,通过帖子存在的唯一变量变为$_POST['field_name_1']
和$_POST['field_name_2']
。您可以通过print_r($_POST);
确认查看哪些帖子密钥存在。
您需要将row_selected
放入一个我们可以在php中变成数组的对象:
$("#sup_box").on("submit", function (e) {
e.preventDefault();
var objs = [];
$('.row_selected').each(function () {
var inputs = $(this).find('input'), arr = {};
inputs.each(function () {
arr[$(this).attr('id')] = this.value;
});
objs.push(arr);
});
console.log(objs);
$.ajax({
type: "post",
url: "<?php echo base_url(); ?>app/admin_control/add_data",
data: JSON.stringify(objs),
//dataType: "json",
success: function (data) {
//alert("hai");
},
error: function (data) {
//alert("not");
}
});
});
控制器:
$stream = $this->input->raw_input_stream;
$postdata = json_decode($stream);
//echo '<pre>';
//print_r($postdata);
foreach ($postdata as $item) {
$data = array(
'bill_no' => '1',
'user_id' => '1',
'type' => $item->add_type,
'number' => $item->add_number,
'quantity' => $item->add_quantity,
'amount' => $item->add_amount,
'profit' => $item->add_profit,
'agent_amount' => $item->add_agent_amount
);
$this->db->insert('sometable', $data);
//print_r($data);
}
答案 2 :(得分:0)
出于调试目的,
在检查ajax代码时应使用console.log(toPost)
。
同样在PHP控制器部分,您可以使用print_r($_POST)
或dd($_POST)
。这将帮助您找到要查找的$_POST[]
数组键。
答案 3 :(得分:0)
在AJAX中
$("#sup_box").on("submit", function (e) {
e.preventDefault();
var toPost = $('#sup_box').serialize();
$.ajax({
type: "post",
url: "<?php echo base_url();?>index.php/app/admin_control/add_data",
data: toPost,
# dataType:"json", if need
success: function (data) {
alert("hai");
},
error: function (data) {
alert("not");
}
});
});
在PHP中
$type = $_POST["add_type"];
....
格式
<form id="sup_box"></form>