-1

可以这么说,我正在编写一个“投注”脚本,并制作一个自动化系统。

投注者将能够选择增加或减少赢或输的金额。

我编写的 PHP 脚本返回echo json_encode(array('result' => 'win'));或“损失”表示损失。

为什么下面的代码不会根据结果更新金额的值?

$(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);
});

});

谢谢。

4

3 回答 3

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++;
          });
于 2013-10-18T23:58:33.020 回答
0

如果答案没有帮助,您可能希望将代码缩减为问题的具体细节,但您应该实际查看发回的数据。这将是:

{"result":"win"}

因此,要访问.done函数中的结果,您需要使用result.result.

此外,如果您返回 JSON,jQuery 可能会自动解析它并JSON.parse可能导致错误。要让 jQuery 执行此操作,请通过 PHP 发送 JSON 内容类型标头:

header("Content-type: application/json");
于 2013-10-18T21:35:07.933 回答
0

我相信问题是===因为三个等于是一个严格的运算符,这意味着值和类型必须相等。

在您的情况下,您似乎正在尝试确保结果是类型JSON并且等于STRING

试试双等号==吧?

编辑:

哦,现在明白了……

实际上,您不能为函数的结果赋值。所以,

改变这个:

$('#bet_amount_auto').val() = $('#bet_amount_auto').val() * $('#wini').val();

$('#bet_amount_auto').val($('#bet_amount_auto').val() * $('#wini').val());
于 2013-10-18T21:36:20.157 回答