2014-01-19 32 views
0
success: function(response){ 
       console.log(response); 
       if(response === 1){ 
        alert('<p>New booking added !</p>'); 
       } 
      } 

我的ajax工作正常,但是當我匹配響應顯示消息它不工作...在控制檯顯示1,那麼還有什麼是不顯示警報的原因?阿賈克斯響應數據類型不匹配

這個1由PHP從下面的代碼顯示。如果操作數是相等的和相同類型的

/** 
* Add new booking 
*/ 
if (isset($_POST['newbooking'])) { 
    unset($_POST['newbooking']); 
    $arg = $_POST; 
    $booking = new Bookings; 
    if ($new_booking = $booking->Add_Booking($arg)) { 
     $room = new Rooms; 
     // Set room status to reserved 
     $room->Set_Room_Status($new_booking, 2); 

     echo 1; // successfull 
    } else { 
     echo 0; // something happens wrong 
    } 
} 

由於

+0

嘗試'parseInt(response)=== 1' – hjpotter92

+0

nope:S仍然沒有顯示任何警報 –

回答

0

===比較運算符意思是「完全等於」,返回true。由於您將文本響應與預期的整數類型進行比較,表達式將始終失敗。

使用

if (response == '1') { 
    alert('<p>New booking added !</p>'); 
} 

代替。順便說一句,alert不會翻譯<p>標籤。

+0

是的,我知道你的點bro,但多數民衆贊成什麼我問,即使即時從PHP返回整數爲什麼ajax被視爲字符串? –

+1

所有回覆均視爲字符串。 – hjpotter92

+0

,因爲沒有這樣的響應數據類型爲「整數」或「數字」。客戶應該如何告訴你服務器端已經產生了'echo 1;'而不是'echo'1';'?響應將始終是帶有或不帶有某些預期格式的文本,如JSON或XML。 – davidkonrad