在AJAX中编写if / else语句

时间:2015-01-02 12:16:55

标签: php jquery 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 / else语句应该完全相同,是因为它是jQuery / AJAX吗?我该如何解决?


我还有另一个问题:

在PHP文档中而不是回显中,我可以返回数据。但是,如何在AJAX中使用此返回的数据? 我已尝试使用if / else语句根据返回的数据进行动态事件,但它不起作用。

4 个答案:

答案 0 :(得分: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)$机会仅使用一次,因此我们可以使用rand(1,100)代替使用$ chance。

2)使用三元运算符。

答案 1 :(得分:0)

  

在PHP文档中而不是回显中,我可以返回数据。但是,如何在AJAX中使用此返回的数据?我已经尝试使用if / else语句根据返回的数据进行动态事件,但它不起作用。

请参阅通过PHP输出JSON数据并在AJAX回调中使用此数据,以便通过jQuery处理数据。你不能使用return语句,因为它不是一个PHP函数调用本身,你正在调用一个网页,它将它的数据输出到JS AJAX调用。您可以通过JSON编码(通过json_encode(array $ data))函数轻松读取(并且最有可能由jQuery自动解析,请参阅有关如何处理该回调的jQuery.ajax文档)。

基本上,你打电话给$ .ajax - &gt;浏览器向服务器发送请求,该服务器解析查询并调用PHP函数 - &gt; PHP函数处理数据并使用JSON输出它 - &gt;浏览器读取JSON输出,jQuery将其解析为对象数据 - &gt;将它传递给你进行处理的回调函数。

答案 2 :(得分: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,请不要忘记添加exit

使用上面给出的代码,单击按钮后肯定会出现警告..是的我在jquery中也使用了与HTML代码中的按钮相同的类...祝你好运

答案 3 :(得分:0)

我通过将输出更改为数字来修复它:

的script.php:

if ($chance <= $win_c) {
    echo 0;
} else {
    echo 1;
}

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>

为什么它需要数字而不是字符串?我尝试使用String();将它转换为纯字符串,但这不起作用