在 AJAX 中编写 if/else 语句


Writing if/else statement in AJAX

我一直在搞砸这个应用程序:

赌博.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>

j查询:

$(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 语句根据返回的数据执行动态事件,但它不起作用。

简单类型:

$(".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) $chance只使用一次,所以我们可以使用 rand(1, 100) 代替$chance。

2)使用三元运算符。

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

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

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

你的代码是对的...只需要记住一件小事...

赌博.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代码中按钮相同的类...祝你好运

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

脚本.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>

为什么它需要一个数字而不是一个字符串才能工作?我尝试使用字符串();将其转换为纯字符串,但是这也不起作用