Jquery ajax通过PHP文件将表单数据插入数据库前需要第二次点击
jquery ajax requires second click before form data is inserted into database through php file
我已经看过与此相关的其他问题,我无法找到解决我的问题的答案。
当我点击按钮发布表单数据到php文件,它是验证,如果它通过验证,然后把它放在数据库中,它做验证ok,并给出错误,如果有任何在第一次点击,但如果没有错误,它不做任何事情,需要第二次点击,然后把数据放入数据库?
两个文档我都试过了。准备好了,#项目。点击并放置#项。在文档中单击。现成的功能,没有一个能解决问题。
下面是处理这个问题的jquery和php,如果有人能给我指出正确的方向,我将非常感激。
Jquery$("#postcomment").click(function() {
var Name = $("input#name").val();
var Comment = $("textarea#comment").val()
$("form").submit(function(){
$.ajax({
url: 'comment.php',
data: { name: Name, comment: Comment},
type: 'POST'
});
});
});
PHP $_SESSION['name'] = $_POST['name'];
$_SESSION['comment'] = $_POST['comment'];
$ipaddy = $_SERVER['REMOTE_ADDR'];
if(Input::exists()){
$name = trim (escape($_POST['name']));
$comment = trim (escape($_POST['comment']));
$validate = new Validate();
$validation = $validate->check($_POST, array(
'name' => array(
'required' => true,
'min' => 5,
'max' => 50),
'comment' => array(
'required' => true,
'min' => 10,
'max' => 200)
));
if($validation->passed()){
$insCom = "INSERT INTO comments (name, comment, commentdate, ip) VALUES ('$name', '$comment', NOW(), '$ipaddy')";
if($insCom = $db->query($insCom)){
Session::flash('home', 'successfull');
Redirect::to('test.php');
} else {
Session::flash('home', 'unsuccessfull');
Redirect::to('test.php');
}
}else{
foreach($validate->errors() as $error){
Session::flash('home', $error, '<br>');
Redirect::to('test.php');
}
}
}
表单@Yorick
的HTML<form id="commentForm" name="commentForm" action="" method="post">
<label for="name">Name:</label><br />
<input type="text" id="name" name="name" placeholder="name"/>
<div style="height:30px"></div>
<label for="name">Comment:</label><br />
<textarea id="comment" name="comment" placeholder="comment" rows="5" cols="60" maxlength="200"></textarea>
<br />
<div id="btm">
<button id="postcomment">Post Comment</button>
<div id="sflash">
<?php
if(Session::exists('home')) {
echo '<p>', Session::flash('home'), '</p>';
}
?>
</div>
</div>
</form>
删除
$("form").submit(function(){
}
a的默认类型是submit,所以当你点击它时,你正在处理点击事件并执行ajax调用,然后浏览器随后为你提交表单。
如果您查看浏览器调试控制台上的网络跟踪,您将看到以下内容:
设置type="button"来避免这种情况。还可以从.click()处理程序返回false,以在完全处理单击时阻止单击传播。
$("form")实际上是不需要的,只是引起另一个表单提交。
你肯定需要在$(document).ready(…)构造中安装你的。click()处理程序
相关文章:
- Javascript Select OnChange没有'不要第二次工作
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 单击仅在第二次单击后有效
- 推特引导:弹出窗口不会在第一次点击时出现,但会在第二次点击时显示
- 第二次点击具有不同功能的按钮并更改文本
- 更改第二次推送时不起作用的元素高度
- 在第二次选择中选择2更改属性
- on(“点击”)仅在第二次点击后触发
- 在HTML中,如果第二次加载相同的脚本文件,它还会被加载吗
- Sails.js/Waterline.add()和.remove()仅适用于第二次调用
- 尝试在两次迭代中警告同一选择器的值,在第一次迭代中得到正确的值,而在第二次迭代中获得不正确的值.为什么?
- java脚本中的谷歌地图在第二次点击时不起作用
- 更改类名后,将第二次单击事件附加到元素
- 提交按钮只能在onchange调用输入文本后第二次点击时工作
- 将音频第二次转换为分钟和秒格式
- Jquery移动转换复选框在Jquery onclick函数()中第二次选中不起作用
- 在连续第二次单击时禁用href
- 正在给用户第二次尝试
- 为什么第二次调用isNaN时它不起作用
- Jquery ajax通过PHP文件将表单数据插入数据库前需要第二次点击