【问题标题】:ajax request returns 10 responses per secondajax 请求每秒返回 10 个响应
【发布时间】:2013-12-31 05:32:04
【问题描述】:

根据 ajax 返回的内容( 1 或 0 ),我希望是否处理提交操作:

$(document).ready(function(){
  $("#submit").submit(function(e){

    e.preventDefault();
    var username = $("#username").val();
    if(username){
        $.ajax({
            url: 'checkinput.php',
            data: {data: JSON.stringify(username)},
            type: 'POST',
            dataType: "json",
            success: function (data) {
                if(data.result == 0) {
                    alertify.log( data.error ); // diplay error
                }
                if(data.result == 1) {
                    $("#submit").submit(); // process submit-action => send data to php etc..
                }
            }
        });
    } else {
        alertify.log( "forgotten something" );
    }    
  });
}); 

如果 php-script 返回的结果为 0,则显示错误消息并且页面不刷新(GREAT)

如果 Ajax 返回 1,我希望处理提交操作,以便将数据发送到 php。 但是会发生什么:

Ajax 每秒发送 10 个响应(可能是因为我在 if 子句中调用的函数?) 如果返回结果为 1,我希望处理提交操作。 如何解决?

【问题讨论】:

  • 您使用了$("#submit").submit(function(e){...$("#submit").submit(); 这会导致无限循环。相反,我会使用表单提交按钮来触发 jQuery 块,然后使用 $("#submit").submit(); 如果返回值为 1

标签: javascript jquery ajax return


【解决方案1】:

您有一个无限循环,因为$("#submit").submit() 触发了提交event。您想要的是在不触发事件的情况下提交表单。幸运的是,这意味着在您的代码中添加 3 个字符,[0]

$("#submit")[0].submit();

【讨论】:

  • 感谢您提出这个问题,当我这样做时,会发生以下情况:returned.result == 1(好),但我得到这个 typeError:“TypeError:$(...)[0 ].submit 不是函数”,可以参考一下吗?
  • 哦,抱歉,您需要为表单指定一个不同于“提交”的 id。这是一个由浏览器的功能 引起的已知问题。唯一的解决方法是不使用“提交”作为 id 名称。
猜你喜欢
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
  • 2013-02-08
  • 2021-12-17
  • 1970-01-01
  • 2013-11-08
  • 1970-01-01
相关资源
最近更新 更多