2017-03-06 136 views
0

我在這裏有一個問題。我使用$ajax發佈數據以更新MySQL表。更新邏輯做得很好。AJAX - 爲什麼頁面重定向在這裏失敗?

PHP Snipet

$count=$stmnt->rowCount(); 

if ($count==1){ 
    $output=array('op'=>'tt'); 
    echo json_encode($output); 
}else{ 
    $output=array('op'=>'ff'); 
    echo json_encode($output); 
} 

JS代碼

success: function(data) { 
       console.log(data);//On update, this is printing{"op":"tt"} 

       if (data.op ==='tt') { 
        console.log(data);//this is not executing. 
        window.location.href= 'post.php' 
       }else{ 

        alert("Error!"); 
       } 
      } 

我已經意識到,沒有執行我的if聲明。這裏出了什麼問題?

+0

你確定數據是一個對象嗎?或者它可能是一個字符串,需要首先解析json? – jeroen

+0

在你的'$ .ajax'調用(不包括)你通過'dataType'(如果有)傳遞什麼? –

+1

你用'console.log(data.op);'得到了什麼? –

回答

1

默認情況下,jquery ajax沒有dataType將嘗試設置基於MIME類型的響應。

如果你有一個字符串,可以手動解析它,即:

success: function(data) { 
    data = $.parseJSON(data); 

,或者你可以指定數據類型的jQuery對$就要求使用。

+0

棒極了,你救了我的一天,教會了我幾個關於調試的技巧; D – JWizard

1

您應該首先解析json,然後才能從中獲取純文本。

var result = jquery.parseJSON(data); 
     if (result.op == 'tt') { 
      ... 
     } 
+0

這看起來不正確......爲了解析data.op,你必須已經解析了數據 - 而data.op應該只是一個字符串,而不是json。 –

+0

你是對的,謝謝@ freedomn-m –