我正在编写一个“投注”脚本,并且正在制作一个自动化系统。
投注者可以选择增加金额或减少赢或金额。
我写的PHP脚本会丢失echo json_encode(array('result' => 'win'));
或'loss'。
为什么以下代码不会更新该值的值取决于结果?
$(document).ready(function(){
function updateValuesAuto() {
// Grab all the value just incase they're needed.
var multiplier_auto = $('#multiplier_auto').val();
var percentage_auto = $('#percentage_auto').val();
var bet_amount_auto = $('#bet_amount_auto').val();
var profit_amount_auto = $('#profit_amount_auto').val();
multiplier_auto = (100-1)/percentage_auto;
profit_amount_auto = (bet_amount_auto*multiplier_auto)-bet_amount_auto;
$('#multiplier_auto').val(multiplier_auto);
$('#percentage_auto').val(percentage_auto);
$('#bet_amount_auto').val(bet_amount_auto);
$('#profit_amount_auto').val(profit_amount_auto);
}
$('#multiplier_auto').keyup(updateValuesAuto);
$('#percentage_auto').keyup(updateValuesAuto);
$('#bet_amount_auto').keyup(updateValuesAuto);
$('#profit_amount_auto').keyup(updateValuesAuto);
var runI = null;
var $run = $('#start');
var $times = $('#amount_bets');
var $stop = $('#stop');
$run.on('click', function() {
event.preventDefault();
$(this).attr('disabled', true);
$stop.attr('disabled', false);
var ran = 0;
var val = parseInt($times.val(), 10);
if(isNaN(val) || val === 0 ) return false;
runI = setInterval(function() {
if( ran < val ) {
$.ajax({
url: './requests/bet.php',
type: 'POST',
data: { amount: $('#bet_amount_auto').val(), chance: $('#percentage_auto').val(), multiplier: $('#multiplier_auto').val(), profit: $('#profit_amount_auto').val() },
}).done(function(result) {
var result = JSON.parse(result);
if( result === 'win' ) {
$('#bet_amount_auto').val() = $('#bet_amount_auto').val() * $('#wini').val();
}
else if( result === 'loss' ) {
$('#bet_amount_auto').val() = $('#bet_amount_auto').val() * $('#lossi').val();
}
ran++;
});
}
else {
clearInterval(runI);
$run.attr('disabled', false);
}
}, 500);
});
$stop.on('click', function() {
event.preventDefault();
clearInterval(runI);
$run.attr('disabled', false);
});
});
感谢。
答案 0 :(得分:0)
如果答案没有帮助,您可能希望将代码减少到问题的细节,但是您应该真正查看发回的数据。它将是:
{"result":"win"}
因此,要访问.done
函数中的结果,您需要使用result.result
。
此外,如果您要发回JSON,jQuery可能会自动解析它,JSON.parse
可能会导致错误。要让jQuery执行此操作,请通过PHP发送JSON内容类型标头:
header("Content-type: application/json");
答案 1 :(得分:0)
我认为问题是===
,因为三个等于是一个严格的运算符,这意味着值和类型必须相等。
在您的情况下,您似乎正在尝试确保结果类型为JSON
且等于STRING
尝试双等于==
?
编辑:
哦,现在就明白了......
实际上,您无法为函数的结果赋值。所以,
改变这个:
$('#bet_amount_auto').val() = $('#bet_amount_auto').val() * $('#wini').val();
到
$('#bet_amount_auto').val($('#bet_amount_auto').val() * $('#wini').val());
答案 2 :(得分:0)
两件事:
1.您无法为函数设置值(您不能将函数放在赋值的左侧)
2. result
是JSON,您需要使用result.result
$.ajax({
url: './requests/bet.php',
type: 'POST',
data: { amount: $('#bet_amount_auto').val(), chance: $('#percentage_auto').val(), multiplier: $('#multiplier_auto').val(), profit: $('#profit_amount_auto').val() },
}).done(function(result) {
if( result.result === 'win' ) {
$('#bet_amount_auto').val($('#bet_amount_auto').val() * $('#wini').val()) ;
}
else if( result.result === 'loss' ) {
$('#bet_amount_auto').val($('#bet_amount_auto').val() * $('#lossi').val()) ;
}
ran++;
});