2013-07-18 24 views
0

這是我做的一個AJAX登錄。JSON正在打印而不是重定向

$(function() { 
    $('#loginform').submit(function(){ 

     var uname = $('#username').val(); 
     var password = $('#password').val(); 

     $("#loading").show(); 
     $("#loading").fadeIn(400); 

     $.POST('php/authorization.php', (username: uname, password: password), 
      function(asd) { 
      if(asd.success){ 
       location.href = asd.redirect; 
      }else{ 
       $('.error').html(asd.message); 
      }; 
     }, 'json'); 

     return false; 
    }); 

}); 

和PHP代碼段

if($data = mysql_fetch_assoc($raw)) 
{ 
    $_SESSION['loggedin'] = true; 
    $_SESSION['uid'] = $data['u_id']; 
    $_SESSION['uname'] = $data['u_name']; 
    $_SESSION['utype'] = $data['u_type']; 
    $_SESSION['uactive'] = $data['u_active']; 
    mysql_close($link); 

    $asd['success'] = true; 
    $asd['redirect'] = '../dashboard.php'; 
} 
else 
{ 
    mysql_close($link); 

    $asd['success'] = false; 
    $asd['message'] = "Wrong username or password"; 
} 

echo json_encode($asd); 

的問題是,不是重定向或做任何動作,PHP是印刷{"success":true,"redirect":"..\/dashboard.php"}代替。

爲什麼?提前致謝。

+0

你已經編輯了這個問題..是不是造成這個問題的原因是什麼? –

+1

你可以更新你的代碼片段功能嗎?因爲它有很多錯誤,但它們可能只是你的錯誤。 'POST'不應該大寫,你已經把'()'而不是'{}' – loganfsmyth

+0

另外,你是什麼意思的「PHP正在打印......而不是」?你的意思是頁面正在更新以顯示? PHP應該打印出你所展示的內容。 – loganfsmyth

回答

1

嘗試改變:

$.POST('php/authorization.php', (username: uname, password: password), ... 

$.post('php/authorization.php', {username: uname, password: password}, ... 

我認爲正在發生的事情給你的是,這些錯誤阻止Javascript運行,因此return false;永遠不會執行你的形式只是定期提交。

+0

抱歉。這是一個愚蠢的錯誤(我在這裏重寫了這段代碼,我錯過了那個,已經編輯過了)。我仍然想知道爲什麼它沒有成功(儘管響應對象名稱是正確的) – rolodex

+0

@YotamOmer縮進使得很難看到,但他從處理程序返回false,應該覆蓋該處理程序。 – loganfsmyth

+0

@loganfsmyth是啊只是看着它..:/ –