gpt4 book ai didi

javascript - 在 CodeIgniter 的 AJAX 成功函数中提交动态创建的表单

转载 作者:行者123 更新时间:2023-11-28 01:27:38 26 4
gpt4 key购买 nike

我有在 AJAX 调用的成功函数中动态创建的表单。我认为,一旦将此表单附加到 DOM,它就会像 CodeIgniter 中的普通表单一样提交。然而,当我点击提交按钮时,它被发送到适当的 Controller ,但没有任何 POST 数据被提取。

我的初始形式:

 <div id="editTicketOptions" class="alert alert-info" style="display:none">
<form name="editTicketForm" id="editTicketForm" action="">
<div class="form-group">
<label for="edit_ticket">Choose a Ticket:</label>
<select name="edit_number" id="edit_number" class="form-control">
<option value="">Choose one...</option>
<?php foreach ($created_tickets as $ticket): ?>
<option value="<?php echo($ticket->ticketId); ?>"><?php echo ($ticket->ticketId . " - " . $ticket->headline); ?></option>
<?php endforeach; ?>
</select>
</div>
</form>
</div>

我的 AJAX 调用:

$('#edit_number').change(function(){
$.ajax({
type:"POST",
url: "<?php echo base_url('ticket_system/edit_details'); ?>",
dataType: "json",
data:{
'ticketId': $(this).val()
},
success: function(ticket){
$("#headline_entry").remove();
$("#description_entry").remove();
$("#priority_entry").remove();
$("#button_entry").remove();
$("#editTicketForm").append("<div class='form-group' id='headline_entry'><label for='edit_headline'>Headline:</label><input type='text' class='form-control' name='edit_headline' id='edit_headline' required></div>");
$("#editTicketForm").append("<div class='form-group' id='description_entry'><label for='edit_description'>Description:</label><textarea class='form-control' rows='3' name='edit_description' id='edit_description' required>" + ticket[0].description + "</textarea></div>");
$("#editTicketForm").append("<div class='form-group' id='priority_entry'><label for='edit_priority'>Choose priority:</label><select name='edit_priority' id='edit_priority' class='form-control'><option selected value=" + ticket[0].priority + ">" + ticket[0].priority + "</option><option value='High'>High</option><option value='Medium'>Medium</option><option value='Low'>Low</option></select>");
$("#editTicketForm").append("<div class='text-center' id='button_entry'><input class='btn btn-primary' type='submit' id='editTicketButton' value='Edit Ticket'></div>");
$("#editTicketForm").attr("action", "<?php echo base_url('ticket_system/edit_ticket/'); ?>" + "/" +ticket[0].ticketId + " ");
}
});
});

我的 Controller 函数:

public function edit_ticket()
{
$ticketId = $this->uri->segment(3);
$headline = $this->input->post('edit_headline');
$description = $this->input->post('edit_description');
$priority = $this->input->post('edit_priority');
$edit_ticket = array(
'ticketId' =>$ticketId,
'headline' => $headline,
'description' => $description,
'priority' => $priority
);

$this->tickets->editTicket($edit_ticket);

redirect('ticket_system/view_tickets');
}

我知道这不是最漂亮的代码,但我是否遗漏了一些简单的东西?有更好的方法吗?

感谢您的帮助!

最佳答案

问题是您的 Controller 方法 edit_ticket() 正在接收 POST 信息 $this->input->post(...) 但您没有设置您的将表单传递给方法 POST,从而发送 GET 信息而不是 POST。

解决方案:将属性 method="POST" 添加到您的表单中:

<form name="editTicketForm" id="editTicketForm" method="POST">

关于javascript - 在 CodeIgniter 的 AJAX 成功函数中提交动态创建的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31482145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com