Javascript 表单通过ajax转换为PHP

Javascript 表单通过ajax转换为PHP,javascript,php,ajax,Javascript,Php,Ajax,我正在尝试使用一个小PHP脚本向数据库提交一个简单的表单,它工作得非常好 div id="prontoform"> <!--<p>*</p>--> <form action="procesar.php" method="post"> <input type="text" class="input" value="" name="nombre" placeholder="n

我正在尝试使用一个小PHP脚本向数据库提交一个简单的表单,它工作得非常好

     div id="prontoform">
        <!--<p>*</p>-->
        <form action="procesar.php" method="post">
            <input type="text" class="input" value="" name="nombre" placeholder="nombre"></input>
            <input type="text" class="input" value="" name="mail" placeholder="mail"></input>
            <input type="submit" value="Enviar" id="enviar"></input>
        </form>
    </div>
divid=“prontoform”>
但是,当我试图通过ajax序列化它时,它不再工作了,我在数据库中得到一个新条目,但它是空的,而且脚本会返回我自己的错误消息,我不知道为什么

         jQuery(function($) { 
            $("#enviar").click(function(e) {
                e.preventDefault();
                    var opciones = {
                        method:"post",
                        url:"procesar.php",
                        data: $('form').serialize(),
                        success:function(result){
                            $("body .exito").remove();
                            $("body .error").remove();
                            if(result=="exito"){
                                $("body").append("<div class='exito'>Sus datos fueron enviados correctamente.</div>");
                            }else{
                                $("body").append("<div class='error'>Error al enviar los datos, por favor intente denuevo.</div>");
                            }   
                        }   
                    };
                $.ajax(opciones);   
             });
         });    
jQuery(函数($){
$(“#enviar”)。单击(函数(e){
e、 预防默认值();
var opciones={
方法:“张贴”,
url:“procesar.php”,
数据:$('form')。序列化(),
成功:功能(结果){
$(“body.exito”).remove();
$(“body.error”).remove();
如果(结果=“exito”){
$(“正文”)。附加(“修订版”);
}否则{
$(“正文”).append(“错误al-enviar los datos,por-favor intent denuevo”);
}   
}   
};
$.ajax(opciones);
});
});    
有什么线索吗

编辑:这是php脚本,正如我之前所说,它在没有ajax的情况下运行良好

<?php
  if(isset($_POST['nombre'])){
    $nombre = $_POST['nombre'];
    }else{
    $nombre = ""; 

  }

  if(isset($_POST['mail'])){
    $mail = $_POST['mail'];
    }else{
    $mail = ""; 

  }

    $conn=mysql_connect('localhost', 'viveofer', '0Q51akeSf1');
    mysql_select_db("viveofer_1",$conn);
    $query ="INSERT INTO datos_pronto (nombre, mail)";
    $query .="VALUES ('".$nombre."','".$mail."')";       
    mysql_query($query) or die("Error sending data.<br>");   


 return "exito";

?>

您可以使用以下演示代码
表格id=frm

$("#frm").ajaxform(function(){

//here you can write your ajax before send,suceess and complete methods


}).submit();
您需要在
数据:$('form').serialize(),
中添加jquery表单使用
$('form','prontoform')
而不是
$('form')

页面中可能有其他表单,通过使用
$('form')
,您可能是针对其他表单。。通过使用
$('form','prontoform')
您将在div
中使用form

编辑:根据讨论,问题在于行
方法:“post”,应该是
类型:“post”,使用此

$('#prontoform form')。序列化()

而不是这个


$('form').serialize()

将新记录插入数据库的代码在哪里?没有这个很难说。我编辑了这个问题。注意。如果它返回您自己的错误消息,您检查该消息的条件是什么?调试时,在这两种情况下是否向服务器发布了相同的值?PHP日志中是否有错误?从数据库返回错误?如果没有ajax,我会得到表单中提示的值,当我使用ajax时,我会得到一个空条目。。。条件是当我在php脚本中“return:exito”时警告:您的代码对SQL注入非常开放。用户几乎可以在您的数据库上运行他们想要的任何代码。在这种情况下,从chrome控制台的“网络”选项卡尝试查看发送的是什么表单数据参数…这很奇怪,我的参数被发送到“procesar.php”,但使用GET方法,这意味着什么?明白了!,我正在将我的参数存储在数据库中,但问题是我的错误消息仍然被追加,而不是“exito”(成功)消息是否应该是
echo“exito”
而不是
返回“exito”。。看看同一个网络选项卡上的返回值是什么是的,我确实注意到了这一点,并对其进行了更改,但是仍然不能正常工作,甚至很难,查看网络选项卡时,我从脚本中得到了“exito”作为响应。。编辑:第1行的响应实际上是“exito”,第二行是空白的,为什么我会得到第二行?是的,这需要jQuery的插件