1

我做了一个登录,使用 ajax 将表单发送到一个应该返回结果的 php 文件。但是在几个浏览器中我得到了错误,而在 Firefox 中它似乎像一个魅力。JS:

    $.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 @error 函数: error:,status:error,xhr: [Object object]

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);

省略所有不重要的代码。希望任何人都可以帮助我解决这个问题,在此先感谢。

4

2 回答 2

0

让我看看我是否理解正确,ajax 数据仅在 chrome 和 firefox 中以正确格式返回,即便如此,只有您将 json 电子邮件发送给自己?请澄清。

于 2012-05-20T06:48:50.703 回答
0

可能这是编码问题。试试这个

echo htmlspecialchars(json_encode($aDataR), ENT_QUOTES);
于 2012-05-20T07:20:06.727 回答