我有一个非常奇怪的情况。我有一个AJAX函数,它将表单数据发送到php codeigniter控制器,在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()放入其中,但现在很明显它没有响应。有没有其他方法可以做到这一点或代码中的任何更正? 请注意,相同的代码在另一台服务器上运行正常。这是在迁移后发生的。
非常感谢您的帮助!
答案 0 :(得分:1)
非常感谢您的善意信息 @DFreind 和 @JonathanLonowski ,有了您的提示,我终于想出了这个问题花了我差不多3天。 实际上,当我仔细查看PHP生成的html时,它说: 1 {"响应":200,"数据":null,"消息":null}
这' 1'在生成JSON字符串之前无法修改标头错误!
经过多方努力,我刚看到一个纯粹的该死的&#39; 1&#39;就在我的控制器的第一行打开<?php
标签之前。删除这个&#39; 1&#39;工作就像一个魅力,所有的错误都消失了,生命得到了拯救,现在在天堂加药: - )
对研究人员的指示:如果您遇到类似的错误,请安装Firebug并始终查看响应标头,尝试进行试验。大多数情况下PHP错误会导致输出混乱。在我的情况下,已经发送了&#39;标题&#39;生成错误是因为在php启动输出之前,html进来了。请注意任何echo()或set_cookie()函数!
感谢各位StackOverflowish极客:)