使用ajax将文本传递给db

时间:2014-01-04 21:37:23

标签: ajax jquery

我正在尝试从表单中获取简单文本,通过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代码无效。

任何信息都将不胜感激!

谢谢。

1 个答案:

答案 0 :(得分:0)

您发布的代码中缺少的一件事是禁用默认表单提交。还有其他问题。

您没有指定操作,因此默认情况下,操作与页面的URL相同。

<form method="POST">

您正在使用AJAX,但尚未使用return falseevent.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
    });
});