我做了一個使用ajax發送表單到一個PHP文件,它應該返回結果..however在幾個瀏覽器我得到的錯誤,而在Firefox中它似乎像魅力一樣工作。 JS:ajax + php + json =登錄
$.ajax({
type: "POST",
url: "http://www.xxxxxx.net/login.php",
data: dataString,
dataType: "json",
success: function(json) {
if(json.jresult==false){
alert(json.jerror);
}
else{
if(json.identification==0 || json.identification==1){
// register: do some stuff
}
else if(json.identification==2){
// login: do some stuff
}
else{
return(false);
}
}
},
error: function(xhr, textStatus, errorThrown) {
alert('error:'+errorThrown+',status:'+textStatus+',xhr:'+xhr);
},
complete: function(jqXHR, textStatus) {
alert(textStatus);
}
});
錯誤,我從使用Safari,Opera和RockMelt的Ajax調用獲得:
@complete功能: textStatus =錯誤 @error功能:錯誤:,狀態:錯誤,XHR:[對象物體]
PHP:
session_cache_limiter('nocache');
header('Expires: '.gmdate('r',0));
header('Content-type: application/json');
// set response array
$aDataR = array();
$aDataR['jresult'] = false;
$aDataR['identification'] = -1;
if(!isset($_POST['iID'])){
}
else{
if($_POST['iID']==0){
/* REGISTER */
}
elseif($_POST['iID']==1){
/* LOST PASS */
}
elseif($_POST['iID']==2){
/* LOGIN */
$aDataR['identification'] = 2;
if(false==($mResponse = $cChallenges->CheckLogin($_POST['sUser'],$_POST['sPass']))){
$aDataR['jerror'] = "No such user/password combination";
$cChallenges->ProbeLogin($_POST['sUser'],$_SERVER['REMOTE_ADDR']);
}
else{
$aDataR['jresult'] = true;
$aDataR['jsuccess'] = "Thanks for logging in";
}
}
}
echo htmlspecialchars(json_encode($aDataR), ENT_NOQUOTES);
忽略所有不重要的代碼。 希望任何人都可以幫助我解決這個問題,提前致謝。
你的ajax調用的實際結果是什麼?在調試器控制檯中查看它。什麼是xhr.responseText? – Bergi
值爲空。 – JustaN00b
這聽起來像一個PHP錯誤,json_encode應該總是打印一個字符串。嘗試調試您的PHP應用程序。 – Bergi