我正在尝试从表单中获取简单文本,通过ajax将其传递给我的控制器,并将其发送到数据库。
查看
<form method="POST">
Email: <input type="text" name="email" id="email">
Question: <input type="text" name="qText" id="qText">
<input id="rate" type="submit">
</form>
<script type = "text/javascript">
$(function(){
$("#rate").click(function(){
dataString = $("#email").serialize();
$.ajax({
type: "POST",
url: "<?php echo base_url();?>index.php/trial/insert_into_db",
data: dataString,
});
});
});
</script>
控制器代码和型号代码工作正常。我几乎可以肯定,这是ajax代码无效。
任何信息都将不胜感激!
谢谢。
答案 0 :(得分:0)
您发布的代码中缺少的一件事是禁用默认表单提交。还有其他问题。
您没有指定操作,因此默认情况下,操作与页面的URL相同。
<form method="POST">
您正在使用AJAX,但尚未使用return false
或event.preventDefault
$("form").submit(function(event) {
event.preventDefault();
// or
return false;
});
我更喜欢preventDefault()
但重点是您需要阻止默认的浏览器行为。
编辑:这是我使用AJAX提交表单的方式。
如果您有多个表单按钮需要考虑
$("form").submit(function(e) {
e.preventDefault();
});
$("#rate").click(function(e) {
$.ajax({ ... });
});
但是使用一个处理程序(稍微)更容易做到这一点。我还会在表单上粘贴操作,以便在javascript失败时表单仍然提交到正确的URL。
<form id="myform" action="<?php echo base_url();?>index.php/trial/insert_into_db" method="post">
而不是处理按钮单击处理表单提交
$("#myform").on("submit", function(e) {
e.preventDefault();
var formData = $(this).serialize();
$.ajax({
type = "post",
url = $(this).attr("action"),
data = formData
})
.done(function(result) {
// do something with the response
});
});