这是我的表格:
<form action="/scripts/addemail_fb.php" method="post">
<input type="text" name="email" value="Enter your email here!" />
<input id="submit" type="submit" name="submit" value="Go!" />
</form>
我的jQuery:
$(document).ready(function() {
$('form').submit(function() {
email = $('input[name=email]').val();
$.post("/scripts/addemail.php", {email_address:email}, function(data){
if(data == "invalid") {
alert("invalid");
} else if(data == "used") {
alert("used");
} else if(data == "success") {
alert("success");
} else {
alert("error");
}
});
});
});
和我的PHP:
<?php
mysql_connect ('localhost', '********', '********') ;
mysql_select_db ('Blog');
function check_email($input) {
$input = htmlspecialchars(strip_tags($input));
$checkaddress = "SELECT * FROM emails WHERE email='$input'";
$query = mysql_query($checkaddress);
if (!eregi("^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $input)) {
return "invalid";
} else if ( mysql_num_rows($query) >= 1 ) {
return "used";
} else {
$result = mysql_query("INSERT INTO emails (email) VALUES ('$input')");
return "success";
}
}
$email = urldecode(implode(file('php://input')));
$result = check_email($email);
echo $result;
?>
问题是它转到了action =“/ scripts / addemail_fb.php”而不是jQuery。我是AJAX的新手,也是jQuery的AJAX,但我已经使用jQuery很长一段时间了。
我认为有两个问题:我认为信息没有正确发送到jQuery,我不知道如何处理PHP中的密钥:值对(email_address:email)。谢谢你的帮助!是的,我显然是初学者。
答案 0 :(得分:5)
在表单的提交函数中添加return false;
以防止默认行为。
答案 1 :(得分:1)
考虑将“提交”类型的输入更改为“按钮”。然后将您的jquery代码添加到该按钮的“onclick”事件中。所以...而不是“$('form')。submit()......”你应该使用
$("#nameofSubmitButton").click(function(){
//do your stuff here.
});
答案 2 :(得分:0)
你需要一个onSubmit事件处理程序,在form标签中显式,或者通过DOM / jquery隐式附加到它,指向你的函数。
答案 3 :(得分:0)
您可以将表单操作设置为
<form action='javascript:yourAjaxFunction();'></form>
然后在提交表单时,它将运行您定义的javascript函数。如果您正在使用jquery,则可以使用表单的.serialize方法将所有变量放入您可以在ajax调用中发送的查询字符串。