2015-01-02 44 views
1

我一直在使用這個應用程序瞎搞:寫作if/else語句在AJAX

gamble.php:

function gamble() { 
    $chance = rand(1, 100); 

    if ($chance <= 40) { 
     echo "win"; 
    } else { 
     echo "lose"; 
    } 
} 
gamble(); 

HTML:

<button type="button" class="btn">Click Me</button> 

的jQuery:

$(document).ready(function() { 
    $(".buy_btn").click(function() { 
     $.ajax({ 
      type: 'POST', 
      url: 'scripts/gamble.php', 
      success: function(data) { 
       if (data == "win") { 
        alert("You win"); 
       } else { 
        alert("You lose"); 
       } 
      } 
     }); 
    }); 
}); 

爲什麼if/else語句不工作?
它的設置完全像JavaScript/if語句應該是因爲它是jQuery/AJAX嗎?我該如何解決它?


我也有一個問題:

的PHP文件而不是呼應裏面,我可以返回數據來代替。但是,如何在AJAX中使用此返回的數據?
我試着使用if/else語句來基於返回的數據進行動態事件,但它不起作用。

+0

在響應中使用JSON。 – Eugen

+0

我不太確定,因爲很久以前我寫了我的學士論文,但我認爲我也有同樣的問題。嘗試類似於:var tmp = data,然後檢查tmp的值是否爲「贏」或不是 –

回答

3

簡單類型:

$(".buy_btn").click(function() { // You called script on this. 

應該

$(".btn").click(function() { // This is actual class of the element. 

否則,代碼是好的。

此外,您還可以優化您的gamble()功能如下:

function gamble() { 
    echo (rand(1, 100) <= 40) ? 'win' : 'lose'; 
} 

建議實施:

1)$機會只能使用一次,所以不是使用$機會,我們可以使用蘭特( 1,100)。

2)使用三元運算符。

+0

是的,在我的腳本中它已被更正,但是當我在此處發佈它時,我忘記了更改它 – dspacejs

+0

腳本起作用,失去工作。你不能贏,因爲某些原因,當你添加if/else語句時,它只會讓你輸。 如果我只有警報(數據);你可以贏或輸,但是你不能用if/else語句 – dspacejs

0

在PHP文檔中而不是回顯中,我可以返回數據。但是,如何在AJAX中使用此返回的數據?我試着使用if/else語句來基於返回的數據進行動態事件,但它不起作用。

請參閱通過PHP輸出JSON數據並在您的AJAX回調中使用此數據以便通過jQuery處理數據。你不能使用return語句,因爲它本身不是一個PHP函數調用,你調用一個輸出它的數據到JS AJAX調用的web頁面。你可以通過json編碼(通過json_encode(array $ data))函數,這個函數很容易讀取(很可能由jQuery自動分析,請參閱jQuery.ajax文檔瞭解如何處理該回調)。基本上,你調用$ .ajax - >瀏覽器向服務器發送請求,解析查詢並調用PHP函數 - > PHP函數處理數據並使用JSON輸出它 - >瀏覽器讀取JSON輸出,jQuery解析它到對象數據中 - >將它傳遞給你的回調函數,在這裏你進行處理。

+0

所以這意味着提問者不必在代碼中改變任何東西。 – Jai

+0

對於眼前的問題,我認爲是。 jQuery可以處理原始文本輸出,這是數據應該包含的內容。我只是在處理他的第二個問題。 –

0

你的代碼是正確的......只需要記住一件小事......

gamble.php:

<?php 
function gamble() { 

    $chance = rand(1, 100); 

    if ($chance <= 40) { 
     echo "win"; 
     exit;  //line added 
    } else { 
     echo "lose"; 
     exit;  //line added 
    } 

} 
gamble(); 
?> 

HTML:

<button type="button" class="btn">Click Me</button> 

的jQuery:

<script type="text/javascript"> 
      $(document).ready(function() { 
       $(".btn").click(function() { 
        $.ajax({ 
         type: 'POST', 
         url: 'scripts/gamble.php', 
         success: function(data) { 
          if (data == "win") { 
           alert("You win"); 
          } else { 
           alert("You lose"); 
          } 
         } 
        }); 
       }); 
      }); 
</script> 
,每當你想通過Ajax任何迴應,如果你想使用 echo然後穿上

」 t忘記加exit

使用上面給出的代碼的警報點擊按鈕後,必將出現..和是的,我也使用jQuery的同一個班給你的HTML代碼按鈕...好運

+1

小心解釋爲什麼當通過ajax使用'echo'迴應你應該在後面添加'exit'時?因爲它最挑釁並不是必需的。退出只是使腳本停止處理,這可能不是OP的意圖 – AeroX

0

我固定它通過改變輸出到數字代替:

的script.php:

​​

JavaScript的:

<script type="text/javascript"> 
       $(document).ready(function() { 
        $(".buy_btn").click(function() { 
         $.ajax({ 
          type: 'POST', 
          url: 'scripts/gamble.php', 
          success: function(data) { 
           if (data == 0) { 
            alert("You win!"); 
           } else if (data == 1) { 
            alert("You lose"); 
           } 
          } 
         }); 
        }); 
       }); 
</script> 

瓦時y它需要一個數字而不是一個字符串來工作?我嘗試使用String();將其轉換爲純字符串,但是這並不起作用