2017-03-06 15 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

'data'はオブジェクトですか?それとも、おそらく最初に解析する必要がある文字列、jsonですか? – jeroen

+0

あなたの '$ .ajax'呼び出し(インクルードされていない)で、' dataType'(もしあれば)として何を渡していますか? –

+1

'console.log(data.op);で何を得るのですか? –

答えて

1

dataTypeなしjquery ajaxは、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 –

関連する問題