我正在尝试获取提交表单而不重新加载页面。
这是脚本:
$(function() {
$("#submit").click(function() {
var email = document.getElementById('emailaddress');
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!filter.test(email.value)) {
$('#invalidmail').show();
var t=setTimeout(function(){$('#invalidmail').fadeOut("slow");},2000);
email.focus;
return false;
} else {
$.ajax({
type: "POST",
url: "traces_form_handler.cgi",
data: email,
success: function(){
alert("success!");
}
});
alert("success!");
return false;
};
});
});
</script>
这是html
<form name="form" method="post">
Email: <input type="text" name="email" id="emailaddress" />
<input type="submit" value="Submit" id="submit"/>
</form>
<p id="invalidmail">Ops! The address you provided is not valid. Please retry.</p>
直到无效邮件部分有效,但如果我提交了有效的电子邮件地址,则浏览器会崩溃。
有什么建议吗?
由于
答案 0 :(得分:2)
我不知道这是否会导致浏览器崩溃。但是你要将dom元素作为数据发送到ajax请求,我想你只想发送它的值。
$.ajax({
type: "POST",
url: "traces_form_handler.cgi",
data: { email: email.value },//Check here in your code
success: function(){
alert("success!");
}
});
答案 1 :(得分:0)
此属性导致问题
url: "traces_form_handler.cgi",
我在浏览器FF 10.0.2上测试了它。
错误控制台错误是: 错误:未捕获异常:[异常...“无法转换JavaScript参数”nsresult:“0x80570009(NS_ERROR_XPC_BAD_CONVERT_JS):: line 7601”data:no]
Solution: url:"some_valid_url_.php"
答案 2 :(得分:0)
您可以使用表单提交事件,它更好
<强> HTML 强>
<form id="myForm" name="form" method="post">
Email: <input type="text" name="email" id="emailaddress" />
<input type="submit" value="Submit" id="submit"/>
</form>
<p id="invalidmail">Ops! The address you provided is not valid. Please retry.</p>
<强> JS 强>
$(function() {
$("#myForm").on('submit', function(e){
e.preventDefault();
var email=$("#emailaddress");
var filter = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/;
if (!filter.test(email.value)) {
$('#invalidmail').show();
var t=setTimeout(function(){
$('#invalidmail').fadeOut("slow");},2000);
email.focus;
return false;
}
else
{
$.ajax({
type: "POST",
url: "my_server-page.php",
data: email.val(),
success: function(data){
alert("success!");
}
});
}
});
});