2015-01-02 45 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();将其转换为纯字符串,但是这并不起作用