2014-03-12 92 views
0

這是一個令人沮喪的問題,因爲它涉及到如此基本的事情,但我正在試圖弄清楚爲什麼它不起作用。jQuery Ajax if else語句不正確地解釋字符串

這是一個簡單的Ajax調用PHP腳本。當結果回來時,在回調中有一個if-else語句,它應該給出兩個可供選擇的行動方案。出於某種原因,即使PHP腳本中的字符串似乎匹配,if語句也會被忽略。

代碼如下。 PHP腳本正在返回字符串'Nothing',因爲它應該這樣做。 console.log顯示該字符串正確傳遞給jQuery腳本,但是if/else語句只是在目標<div>中顯示字符串,而不是隱藏<div>,因爲它應該這樣做。誰能告訴我我做錯了什麼?我有一個可怕的懷疑,這將是一件非常簡單的事情!

jQuery的

 $.ajax({ 
     url: "getcompleted.php", 
     type: "POST", 
     data: {eMail: eMail}, 
     success: function(data){ 
     console.log(data) 
     if (data == "nothing"){ 
      $('#completedAssessDiv').hide(); 
      } 
     else { 
      $('#completedAssessContent').html(data); 
     } 
     } 
    }); 

PHP

<?php 
include_once('dbconnect.php'); 

$email = mysqli_real_escape_string($conn, trim($_POST['eMail'])); 

$run_feedback_query = "SELECT * FROM users_modules WHERE email = '$email' AND complete = '1' ORDER BY modname"; 
$run_feedback_check = $conn->query($run_feedback_query); 
$feedback_count = $run_feedback_check -> num_rows; 

if ($feedback_count > 0) { 
    while ($row = $run_feedback_check -> fetch_assoc()){ 
     $unitdescrip = $unitcheck['mod_name']; 

     echo "<div class='assignmentDetail'>" . $row['descrip'] . "</div>"; 
     } 
} 


else { 
echo "nothing"; 
} 



?> 
+1

'if($ .trim(data)==「nothing」)' –

+0

嘗試alert(JSON.stringify(data)),看看它包含了什麼 –

+0

嘗試'console.log('#'+ data +'#')'檢查空格 – andrew

回答

0

我想你應該添加dataType:"text"

$.ajax({ 
    url: "getcompleted.php", 
    type: "POST", 
    data: {eMail: eMail}, 
    dataType:"text", // <-----add this too 

,並ofcourse你必須trim文本返回表格的Ajax調用:

if ($.trim(data) == "nothing"){ 
0

php的標籤外檢查任何空白

<?php

前後?>

0

只使用exit在你的代碼,這將是你更好你的代碼沒有返回任何東西,然後exit

你的情況應該是這樣的。而圍繞 '無' 如下

使用單引號代替雙引號:

else { 
    echo "nothing"; 
} 
exit; 
0

試試這個

jQuery中:

if (data == 'nothing'){ 

在PHP:

echo 'nothing';