我有一个带有文本框和提交按钮的非常基本的表单。该表单应该接受电子邮件并通过 ajax 请求将其发送到 PHP 页面进行处理。该表单实际上并未提交。相反,onSubmit 事件用于调用一个函数,如果电子邮件的格式有效,则在该函数中发出 Ajax 请求。但是,我看到(通过日志)向 PHP 页面发出了多个请求,但我不知道为什么。以下是我检查/尝试过的一些潜在原因:
- 多次调用 post_email() 函数 - 除了在 onSubmit 事件中之外,不调用其他任何地方
- 用户多次单击 - 可能是可能的,但某些 Ajax 调用之间的间隔在 10 分之一秒内。我正在确认这一点,因为在 PHP 页面中,我正在记录每个请求
- 网站内正在加载多个版本的 jQuery(遗留代码)。我的想法是为每个加载的版本进行 .ajax 调用。但是,我在每个 ajax 调用中添加了 jQuery.fn.jquery 数据字符串,并且此页面上只使用了一个版本
这是我正在使用的代码:
代码
<form id="post_em" name="post_em" method="post" onSubmit="return post_email()">
<h3>enter e-mail:</h3>
<input type="text" id="email" name="email" />
<input type="submit" value="submit" />
<div id="em_response"></div>
</form>
JS代码
function post_email() {
if(isValidEmailAddress(jQuery("#email").val()))
{
var optincurlurl = "opt_in.php";
var dataString = jQuery("#post_em").serialize();
jQuery.ajax({
url: optincurlurl,
type: 'POST',
data: dataString+"&jQuery="+jQuery.fn.jquery,
datatype: "text",
timeout: 3600,
error: function(){
jQuery("#em_response").html("Error.");
jQuery("#em_response").show();
},
success: function(data){
jQuery("#em_response").html(data);
jQuery("#em_response").show();
}
});
} else
alert("invalid email.");
return false;
}
如果您发现多次调用 Ajax 的任何潜在原因,请告诉我。
谢谢。