2011-07-30 11 views
1

私は自分のウェブサイトに大きなフォームを持ち、serialize()を使ってフォームを処理しています。jquery ajax json doesnt return true

私の問題は:
結果は常にフォームが完了した後に結果!私は火かき棒を使ってチェックした。 falseの場合、結果が表示されます。実際にはdata.ok == trueが呼び出されましたが、ページにメッセージが表示されませんでしたか?それは宛先アドレスにページをリダイレクトしませんでしたか?

jqueryのAJAX:PHPで

$("#details").live("submit", function(e){ 
    var form = $(this).serialize(); 
    var data_string = form; 
    $.ajax({ 
      type: "post", 
      url: "../_include/ajax.php?details", 
      cache: false, 
      data: data_string, 
      dataType: "json", 
      success: function(data) { 
       if(data.ok) { 
        ("#pop").html(data.message).addClass("oke").fadeIn("slow"); 
        setInterval(function() { 
         location.href = data.redirect 
        },2000) 

       } else { 
        $("#pop").html(data.message).addClass("warning").fadeIn("slow"); 
       } 

      } 
     }); 

     e.preventDefault(); 
}) 

if (isset($_GET['details'])) { 

    if (empty($name)) { 
      $data['ok'] = false; 
      $data['message'] = 'Please enter name!'; 
    } ................ { 
      ............. 
    } else { 
     $db->query("UPDATE query...."); 
     $data['ok'] = true; 
     $data['message'] = 'Your details has been submitted!'; 
     $data['redirect'] = 'index.php?p=details'; 
    } 


echo json_encode($data); 
} 
+0

あなたはdata.okを試してみました==本当ですか? – Colum

答えて

2

$("#pop").html(data.message).addClass("oke").fadeIn("slow"); 
+0

aaaahhhh!私は不注意だった:(。感謝karim .. – tonoslfx

2

あなたのPHP(if (isset($_GET['details'])))でGETをチェックするが、あなたのAJAXに(postとしてtypeを指定することで)POSTを送信します。

$_GETの代わりに$_POSTアレイをチェックするか、タイプをgetに変更してください。

("#pop").html(data.message).addClass("oke").fadeIn("slow"); 

は次のようになります。:あなたは(つまり、コピー/貼り付けエラーはない場合)あなたの成功の機能に構文エラーを持っているように見えます

+0

私はそれとは関係ないと思います。とにかく$ _GET ['details'] 'が利用できるようになり、そのURLに投稿したデータは' $ _POST'配列で利用可能になります。 – karim79

関連する問題