Ajax .done()不能为我一起工作
Ajax .done() don't work together for me
我有一个很奇怪的情况。我有一个AJAX函数,它将表单数据发送到php编码器控制器,在json响应上,它必须处理响应。第一部分是工作,但后面的部分,这是一个。done()函数,不工作,无论我尝试什么。下面是我的脚本:
var validator = $('#register-company-form').validate({
rules: {
title: {
required: true,
valueNotEquals: 0
},
/* rules here */
},
highlight: function (element) {
$(element).closest('.form-field').addClass('error-field');
},
unhighlight: function (element){
$(element).closest('.form-field').removeClass('error-field');
},
errorPlacement: function(error, element) {},
submitHandler: function(form) {
var formData = new FormData($(form)[0]);
$.ajax({
type: $(form).attr('method'),
url: $(form).attr('action'),
data: formData,
dataType: 'json',
cache: false,
contentType: false,
processData: false
})
.done(function (response) {
$(".form-field").removeClass("error-field");
$(".item-exists").hide();
if(response.Response == 401) {
$("#company_email").closest('.form-field').addClass('error-field');
$("#company_email").closest(".form-field").find(".item-exists").show();
} else if(response.Response == 402) {
$("#personal_email").closest('.form-field').addClass('error-field');
$("#personal_email").closest(".form-field").find(".item-exists").show();
} else if(response.Response == 403) {
$("#user_name").closest('.form-field').addClass('error-field');
$("#user_name").closest(".form-field").find(".item-exists").show();
} else if(response.Response == 200){
/* load my view */
}
});
return false;
}
});
我的PHP脚本返回以下JSON响应:
{"响应":200年,"数据":空,"消息":零}
在得到这个响应后,我的.done()函数应该根据它采取行动并加载一个页面,但事实并非如此。我已经尝试将console.log()和alert()放入其中,但现在很明显它没有响应。是否有其他方法可以做到这一点或在代码中有任何更正?请注意,相同的代码在另一台服务器上确实运行良好。这是在迁移后发生的。
非常感谢你的帮助!
非常感谢您的善意信息@DFreind和@JonathanLonowski,在您的提示下,我终于解决了这个问题,花了我将近3天的时间。实际上,当我仔细观察PHP生成的html时,它说:1{"响应":200年,"数据":空,"消息":零}
生成JSON字符串之前的'1'无法修改报头错误!经过大量的努力,我在控制器的第一行打开<?php
标签之前看到了一个简单的"1"。去掉这个"1"就像施了魔法一样,所有的错误都消失了,生命得救了,现在在天堂的剂量:-)
给研究人员的指示:请安装Firebug,如果你面临类似的错误,总是查看响应头,尝试试验。大多数情况下,PHP错误会干扰您的输出。在我的情况下,'headers already sent'错误产生,因为在php开始输出之前,html进来了。还要注意任何echo()或set_cookie()函数!
谢谢你们所有的StackOverflowish极客:)
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- document.title函数可以't设置它与php一起工作
- "此网站似乎使用滚动链接定位效果.这可能不能很好地与异步平移一起工作;
- 非常简单的js测试;Don’不要和Minko一起工作
- 无法使我的文本参数与我的查询一起工作
- 为什么Angularjs验证don't与输入[type=“number”]一起工作
- 无法使vash 0.8.0与express 4.12.3一起工作
- 如何使Angular JS控制器与指令一起工作
- 无法使autocompletion与bootstrap和php代码点火器一起工作
- 注入的元素和jQuery脚本.如何让他们一起工作
- 两个独立工作的javascript函数,但不能一起工作
- 角度和砖石一起工作
- Node http-proxy-middleware 不能与本地服务器一起工作
- jQuery脚本不想一起工作
- page.js使examples/hash与hashbang:true一起工作
- javascript使jquery倒计时与UTC时间一起工作
- jQuery.not()选择器无法与类一起工作
- Rails3-可排序列表不能与wysihtml5一起工作
- 替换匹配函数给出了未定义的错误,但它与替换一起工作
- 按钮上的数据加载消息无法与ajax调用一起工作