Javascript 表单通过ajax转换为PHP
我正在尝试使用一个小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
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的插件