我一直在搞乱这个应用程序:
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语句根据返回的数据进行动态事件,但它不起作用。
答案 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();将它转换为纯字符串,但这不起作用