JQuery.Ajax发出不需要的多个请求

时间:2013-04-02 18:59:05

标签: jquery ajax onsubmit

我有一个非常基本的表单,带有文本框和提交按钮。该表单应该接受一封电子邮件并通过ajax请求将其发送到PHP页面进行处理。该表格实际上并未提交。相反,onSubmit事件用于调用函数,如果电子邮件的格式有效,则会发出Ajax请求。但是,我看到正在向PHP页面发送多个请求(通过日志),但我很疑惑为什么。以下是我检查/尝试过的一些可能原因:

  • post_email()函数多次调用 - 除了inSubmit事件之外的其他任何地方都没有调用
  • 用户单击多次 - 可能是可能的,但是一些Ajax调用彼此之间的距离是十分之一秒。我确认这是因为在PHP页面中,我正在记录每个请求
  • 在网站中加载了多个版本的jQuery(遗留代码)。我的想法是,每个加载的版本都会进行.ajax调用。但是,我将jQuery.fn.jquery数据字符串添加到每个ajax调用,并且此页面上只使用了一个版本

以下是我正在使用的代码:

HTML CODE

<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 CODE

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通话的原因,请告诉我。

感谢。

0 个答案:

没有答案