1

我是 javascript 的新手,我似乎无法弄清楚我错过了什么。我正在试验来自 jquery 的 ajax 函数。我被困在这段代码上。这个想法是,当一个复选框被选中时,它会执行一个 php 脚本并将该脚本的状态输出到“状态”div。

我花了最后一个小时查看我的代码,我看不出我错过了什么。当然,我的 javascript 技能很低,这可能无济于事。

function playback(){
  $.ajax({
    url:"ChangePlayback.php",
    type: "GET",
    if((document).getElementById('LoopPlayback').checked)
    {
      data: "playback=1",
    }
    else
    {
      data: "playback=0",
    }
    success:function(result){
      $("#Status").html(result);
    }
  });
}

我收到以下萤火虫错误:

missing : after property id
[Break On This Error] if((document).getElementById('LoopPlayback').checked) 

谢谢!

4

6 回答 6

3

你需要重构一下;if 需要在赋值中,不像 SQL 中的 CASE 语句:

...
'data': 'playback=' + (document.getElementById('LoopPlayback').checked ? '1' : '0'),
...

这是一个内联三元语句。或者,如果您想保留结构,您可以存储首选项然后.extend()它们:

var ajaxConfig = {
  'url': 'CHangePlayback.php',
  'type': 'GET',
  'data': 'playback=0',
  'success': function(result){
    $('#status').html(result);
  }
};
if (document.getElementById('LoopPlayback').checked){
  ajaxConfig = $.extend(ajaxConfig,{ 'data': 'playback=1' });
}

$.ajax(ajaxConfig);

当然,更简单的方法是创建一个data变量并将其放在配置中:

var data = 'playback=0';
if (document.getElementById('LoopPlayback')){
  data = 'playback=1';
}

$.ajax({
  ...
  'data': data,
  ...
});
于 2012-09-13T15:13:01.857 回答
2

您可以将其更改为此,以便它执行“if”内联:

function playback(){
  $.ajax({
    url:"ChangePlayback.php",
    type: "GET",
    data: "playback=" + (document.getElementById('LoopPlayback').checked ? "1" : "0"),    
    success:function(result){
      $("#Status").html(result);
    }
  });
}
于 2012-09-13T15:14:50.363 回答
2

这应该有效:

function playback(){
  $.ajax({
    url:"ChangePlayback.php",
    type: "GET",
    data: $('LoopPlayback').val() ? "playback=1" : "playback=0",
    success:function(result){
      $("#Status").html(result);
    }
  });
}

这是对象,您不能在字段之间编写代码:

{
    url:...,
    type:...,
    data:...,
    success:...
 }
于 2012-09-13T15:16:11.110 回答
1

您不能将 if 语句放在对象文字的中间。将其移出 ajax 选项文字:

function playback(){
    var data;

    if(document.getElementById('LoopPlayback').checked) {
        data = "playback=1";
    } else {
        data = "playback=0";
    }

    $.ajax({
        url:"ChangePlayback.php",
        type: "GET",
        data: data,
        success:function(result){
            $("#Status").html(result);
        }
    });
}
于 2012-09-13T15:13:09.453 回答
0

或使用 jquery 来做到这一点

 if ($('#LoopPlayback').is(':checked'))
  //your stuff
于 2012-09-13T15:15:50.580 回答
0

使用更多 jQuery 的强大功能更简洁:

$.ajax({
    url:"ChangePlayback.php",
    type: "GET",
    data: "playback=" + ($("#LoopPlayback").is(":checked") ? "1" : "0"),
    success:function(result){
        $("#Status").html(result);
    }
});
于 2012-09-13T15:16:16.183 回答