0

我有一个带有文本框和提交按钮的非常基本的表单。该表单应该接受电子邮件并通过 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 的任何潜在原因,请告诉我。

谢谢。

4

0 回答 0