使用ajax将文本传递到数据库

使用ajax将文本传递到数据库,ajax,jquery,Ajax,Jquery,我试图从表单中获取简单文本,通过ajax将其传递给我的控制器,并将其发送到数据库 看法 电邮: 问题: $(函数(){ $(“#速率”)。单击(函数(){ dataString=$(“#电子邮件”).serialize(); $.ajax({ 类型:“POST”, url:“index.php/trial/insert_-into_-db”, 数据:dataString, }); }); }); 控制器代码和模型代码工作正常。我几乎可以肯定,是ajax代码不起作用 任何信息都将不胜感激 谢谢

我试图从表单中获取简单文本,通过ajax将其传递给我的控制器,并将其发送到数据库

看法


电邮:
问题:
$(函数(){
$(“#速率”)。单击(函数(){
dataString=$(“#电子邮件”).serialize();
$.ajax({
类型:“POST”,
url:“index.php/trial/insert_-into_-db”,
数据:dataString,
});
});
});
控制器代码和模型代码工作正常。我几乎可以肯定,是ajax代码不起作用

任何信息都将不胜感激


谢谢。

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

您不指定操作,因此默认情况下,该操作与页面的url相同

<form method="POST">
我更喜欢
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">

浏览器的调试控制台将允许您检查网页发出的网络请求,这将帮助您确定是否存在客户端或服务器端问题。如果您使用的是Internet Explorer、F12 developer tools、network、start Capture,则应显示有关请求的详细信息。我认为问题在于你的网址。“insert_into_db”方法应该是公共的,并添加必要的属性。对不起,我对php一无所知。什么返回base_url()函数?也许你没有在结尾加斜杠。。?尝试将slash/index.php/trial/insert_添加到_dbWow中谢谢大家的快速回复。我正在使用google chrome@jasen。我是否转到控制台,然后在底部调试?baseurl在我的配置文件中设置(使用CodeIgniter)。它的末尾有一个/,这就是为什么我不添加斜杠@daguru将按钮点击处理程序替换为表单提交处理程序是最简单的事情。这是可行的,但它不使用ajax。它只是使用表单上的操作。你知道它为什么不使用ajax吗?如果你把
insert\u-into\u-db
url放在表单action
$(this)中,attr(“action”)
将采取表单操作并发布到同一个url。是什么让你相信ajax根本没有被使用?也许ajax正在被使用,但不是以我们想要的方式被使用。我们根本不希望url改变。我们希望它与单击ajax之前一样。我们不希望它是baseurl.com/index.php/trial/insert_into_db@jasen
$("form").submit(function(e) {
    e.preventDefault();
});
$("#rate").click(function(e) {
    $.ajax({ ... });
});
<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
    });
});