Php 为什么我的JS代码运行在一个明显的循环中?

Php 为什么我的JS代码运行在一个明显的循环中?,php,javascript,jquery,html,ajax,Php,Javascript,Jquery,Html,Ajax,我有以下代码: JS $(函数(){ $('fgotpwfield').hide(); $(“#登录_提交”)。单击(函数(){ $('form#u result')。淡出('fast'); $('#myccrxlogin input').removeAttr('disabled'); $('#myccrxlogin')。提交(); }); 如果($(“#myccrxlogin”).length>0){ $(“#myccrxlogin”).validate({ 规则:{ 电子邮件:{requi

我有以下代码:

JS

$(函数(){
$('fgotpwfield').hide();
$(“#登录_提交”)。单击(函数(){
$('form#u result')。淡出('fast');
$('#myccrxlogin input').removeAttr('disabled');
$('#myccrxlogin')。提交();
});
如果($(“#myccrxlogin”).length>0){
$(“#myccrxlogin”).validate({
规则:{
电子邮件:{required:true,email:true},
密码:“必需”
},
信息:{
电子邮件:{必需:'您的电子邮件地址是必需的。',
电子邮件:“请输入有效的电子邮件地址。”},
密码:“您的密码是必需的。”
},
submitHandler:函数(表单){
$('myccrxlogin input').attr('disabled','true');
$('login'u submit').fadeOut('fast');
$('forgotpw')。淡出('fast');
$('body')。追加('');
var email=$(“#email”).val();
var pw=$(“#密码”).val();
var数据='电子邮件='+电子邮件+'&密码='+密码;
$.ajax({
url:“隐藏url”,
类型:“POST”,
数据:数据,
cache:false,
成功:函数(html){
$(“#页面加载”).remove();
如果(html='OK'){
警报(html);
}否则{
//$(“#密码”).val(“”);
$(“#表格#结果”).html(html);
$('form#u result')。fadeIn('slow');
$('#myccrxlogin input').removeAttr('disabled');
$('login'u submit').fadeIn('slow');
$('forgotpw').fadeIn('slow');
}
}
});
}/*关闭提交处理程序*/
});
};
});
HTML

登录

电子邮件

密码

一个人输入他们的电子邮件和密码,文件首先被验证,然后通过ajax调用成功运行。ajax PHP页面echo要么是错误,要么是“OK”。我知道代码会变为“OK”,因为警报(html)会被触发,但它会无限运行。不知道为什么

更新
我相信我可能会遇到这里描述的递归问题:虽然我不确定它是否适用。

我不能单步执行,但我相信你需要让你的
提交者返回false


我相信表单是由表单操作和ajax提交的。

查看您发布的递归链接,您需要更改此行:

$('#myccrxlogin').submit();
因此,提交的是原始表单,而不是jquery版本的表单。以他们为例,

$(form).submit();
变成

form.submit();

尝试以类似的方式更改您的提交行。

令人惊讶的不清楚和疯狂的答案是:我必须在我的ajaxed PHP页面中添加以下内容。关于在本地运行或使用我的设置的一些东西很古怪。希望这对某人有所帮助

添加到ajax php页面的第一行:

header('Access-Control-Allow-Origin: *');

我所说的无限运行是指警报不断发出。和编号$(函数()同样,ShortCode你能设置一个测试页面来演示吗?我想我们需要更多的代码。@尼克-我们的团队还没有新站点的服务器,所以很不幸没有。我最初构建了一个JS fiddle,但显然没有运行ajax,这帮不上什么忙。我会看看我能做些什么。你可以模拟ajax requ类似这样的est:
$.ajax({url:/echo/html/”,键入:“POST”,数据:{'html':'OK'},数据类型:'text/html',…
@Nick Brunt-使用“/echo/html/”运行url在JSFIDLE中,我真的把我的机器甩了。我将进行一些重置和缓存清除,看看是否还有其他因素在起作用。感谢您的建议,但即使我删除了操作(通常我会将其添加到表单本身(.attr)稍后,出于演示目的,此处将更简单地介绍。此方法的问题在于我的页面有多个表单。据我所知,表单.submit();将触发/冲突这两个表单。我相信您可以使用传统的文档。表单[0]。submit()--当然是使用适当的索引--这样做。重点是避免在表单周围使用jquery包装器。
form.submit();
header('Access-Control-Allow-Origin: *');