2011-07-30 99 views
1

我在我的網站上使用大型表單並使用serialize()來處理表單。jquery ajax json does not return true

我的問題是:
結果總是返回false表格完成後!我檢查使用螢火蟲。如果爲false,則顯示結果。它實際上是data.ok == true已被調用,但它沒有在頁面中顯示消息?它沒有將頁面重定向到目標地址?

jQuery的AJAX:

$("#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(); 
}) 

在PHP中:

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

應該是:

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

aaaahhhh!我很粗心:(謝謝karim .. – tonoslfx

2

您檢查您的PHP(if (isset($_GET['details'])))GET,但在你的AJAX發送POST(通過指定typepost)。

請檢查$_POST數組而不是$_GET,或將其類型更改爲get

+0

我認爲這與它沒有任何關係。 '$ _GET ['details']'無論如何都可以使用,並且他發佈到該URL的數據將會在'$ _POST'數組中提供(他可能正在做其他事情)。 – karim79