使用ajax从输入元素向Codeigniter控制器发送值时遇到问题。
由于我必须使用WYSIWYG编辑器(summernote),因此我可以在<script>
内接收输入。但是,当我按下提交按钮时,它只是重新加载当前页面而不是控制器中的页面。
这是我的代码:
PHP视图
<section id="mainContent">
<form method="post">
<input type="text" id="textbox" class="editor" name="textbox">
<input id="submit_btn" type="button" name="sutmit" value="submit" onclick="myFunction()">
</form>
</section>
<script type="text/javascript">
function myFunction() {
var markupStr = $('#textbox').summernote('code');
alert(markupStr);
$.ajax({
type : 'POST',
url : "<?= site_url().'cintern/save'; ?>",
async : false,
data : {'iDes': markupStr},
success : function(data){
alert("Success!");
}
});
return false;
};
</script>
PHP控制器
public function save()
{
$session_data = $this->session->userdata('logged_in');
$data['id'] = $session_data['idlogin'];
$data['role'] = $session_data['role'];
$data['pageTitle'] = 'Success';
$data['iDes'] = $this->input->post('iDes');
$this->load->view('templates/header', $data);
$this->load->view('internship/success', $data);
$this->load->view('templates/footer');
}
请帮忙!提前谢谢。
答案 0 :(得分:0)
您应该使用onsubmit
<form>
代码。
<section id="mainContent">
<form method="post" onsubmit="myFunction()">
<input type="text" id="textbox" class="editor" name="textbox">
<input id="submit_btn" type="button" name="sutmit" value="submit">
</form>
</section>
原因是,如果您处理onclick
的{{1}},则在提交数据后您无法拦截<input type="submit">
代码的请求。
我希望这可以帮到你。
答案 1 :(得分:0)
由于您使用JQuery作为ajax,我建议您使用它来捕获提交。
删除内联的onclick分配。为表单提供id属性。
Library/Application Support/Google/Chrome/Default/Local Extension Settings/<extension id>
将<section id="mainContent">
<form method="post" id="target">
<input type="text" id="textbox" class="editor" name="textbox">
<input id="submit_btn" type="button" name="sutmit" value="submit">
</form>
</section>
变为&#39;提交&#39;事件处理程序
myfunction()
控制器:
<script type="text/javascript">
$("#target").submit(function (event) {
var markupStr = $('#textbox').summernote('code');
//stop the normal submit from happening
event.preventDefault();
$.ajax({
type: 'POST',
url: "<?= site_url().'cintern/save'; ?>",
async: false,
data: {'iDes': markupStr},
success: function (data) {
//do stuff with data then redirect to 'after_save'
console.log(data.results, data.otherstuff);
window.location.href = "http://example.com/cintern/after_save";
}
});
});
</script>