2013-05-22 73 views
0

我正在使用jQuery post方法在MySQL中創建記錄。當我使用==評估PHP的輸出時,所有三個條件都能正常工作。但是,當我使用===時,前兩個條件返回false。我如何將正確的數據類型從PHP傳遞給Javascript?如何將正確的數據類型從PHP傳遞到Javascript

的jQuery:

$("#form").validate({ 

    submitHandler: function(form) { 
     // do other stuff for a valid form 
     $.post('inc/process_form.php', $("#form").serialize(), function(data) { 
      //alert(data); 
      if (data == 1) { 
       $('#results').html("Success"); 
      } else if (data == 2) { 
       $('#results').html("No Success"); 
      } else { 
       $('#results').html(data); 
      } 
     }); 
    } 
}); 

這是在PHP(我已經被截斷,只顯示執行條件):

$value = $stmt->execute(); 

if ($value === TRUE) { 
echo 1; //success 
} else { 
echo 2; //failure 
} 
+1

對於將數據從PHP腳本傳遞迴javascript的一般問題,您應該查看PHP的['json_encode'](http://php.net/manual/en/function.json-encode.php)和jQuery的['parseJSON'](http://api.jquery.com/jQuery.parseJSON/)。這個二重奏可以讓你傳遞更復雜的數據結構,並自動處理類型(字符串,數字,布爾值)。國際海事組織(IMO)提供的簡易性使其值得一提,即使在這種簡單的情況下,您只能傳遞一個值。 – grossvogel

+1

閱讀文檔 - http://api.jquery.com/jQuery.post - 它看起來像'function(data){...}的數據''總是以字符串形式返回'dataType類型:String類型來自服務器的數據。默認值:智能猜測(xml,json,script,text,html).',所以看起來你不能返回一個整數,因此'==='將總是以''1!== 1'的形式失敗。您需要做@grossvogel建議的內容並返回json編碼的字符串,然後解析它以獲得整數類型 – Sean

+1

要擴展@ Sean的評論:如果您要從PHP腳本返回json,則可以設置'dataType'參數到'json',甚至不必使用'$ .parseJSON()'。它會自動解析並且'data'將會是一個很好的JavaScript對象,它具有正確類型的屬性。 – grossvogel

回答

3

試試這個:

if(parseInt(data) === 1){ 

問題是返回變量data是一個字符串,你不能做任何事情(據我所知)從PHP返回它作爲一個整數。

正如Marc Costello的意見所示,這使得===無用,因爲你強制雙方都是整數,所以在這種情況下data == 1更好。

+0

從我的頭頂開始。但'死(1)'這是否會返回一個字符串? –

+0

這是正確的,但在這種情況下將字符串解析爲int可能看起來沒有必要。試試if(data =='1') –

+0

這是一個很好的問題,PHP本身不應該返回任何東西(除非你在死前有迴應),但腳本的退出狀態爲1,退出狀態將被捕獲例如,一個帶有2個參數的系統調用。 – Naryl

0

我從來不需要這樣的事情,但如果你真的要,你可以使用+data可簡單地把它:

data = +data; 
if (data === 1) { 
    $('#results').html("Success"); 
} else if (data === 2) { 
    $('#results').html("No Success"); 
} 
0

在這種情況下,你可以傳遞的,而不是0或1,即真或從PHP假布爾值

相關問題