[英]Ajax .done() don't work together for me
我的情況很奇怪。 我有一個AJAX函數,它將JSON響應上的表單數據發送到php codeigniter控制器,它必須處理響應。 第一部分工作正常,但是后面的部分是.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響應:
{“ Response”:200,“ Data”:null,“ Message”:null}
收到此響應后,我的.done()函數應該按照它的作用並加載一個頁面,而實際上不是。 我嘗試將console.log()和alert()放入其中,但是現在它顯然沒有響應。 還有其他方法可以執行此操作或對代碼進行任何更正嗎? 請注意,相同的代碼在另一台服務器上確實可以正常工作。 遷移后發生了這種情況。
非常感謝你的幫助!
非常感謝您提供的@DFreind和@JonathanLonowski信息,在您的提示下,我終於弄清楚了這個問題,這使我花了將近3天的時間。 實際上,當我仔細查看PHP產生的html時,它說:1 {“ Response”:200,“ Data”:null,“ Message”:null}
JSON字符串生成之前的此“ 1”無法修改標頭錯誤! 經過大量的努力,在控制器的第一行打開<?php
標簽之前,我只是看到一個普通的該死的'1'。 刪除這個“ 1”就像一個魅力,所有錯誤消失了,挽救了生命,現在在天上服用:-)
研究人員的建議:如果您遇到類似的錯誤,請安裝Firebug,並始終查看響應標頭,然后嘗試進行實驗。 大多數時候,PHP錯誤會干擾您的輸出。 在我的情況下,由於在php開始輸出之前,html產生了“已發送標頭”錯誤。請注意所有echo()或set_cookie()函數!
謝謝大家StackOverflowish怪胎:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.