Javascript Checkbox功能:“缺少:属性id之后”

时间:2012-09-13 15:11:06

标签: javascript jquery ajax

我是javascript的新手,我似乎无法弄清楚我错过了什么。我正在试验jquery的ajax函数。我被这段代码困住了。我们的想法是,当选中一个复选框时,它会执行一个php脚本并将该脚本的状态输出到“Status”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);
    }
  });
}

我在firebug中遇到以下错误:

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

谢谢!

6 个答案:

答案 0 :(得分:3)

你需要重新调整一下; if需要在赋值中,而不是像SQL中的CASE语句:

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

这是一个内联三元语句。或者,如果你想保留结构,你可以存储prefs然后.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,
  ...
});

答案 1 :(得分:2)

您可以将其更改为此,以便'if'内联:

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

答案 2 :(得分: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:...
 }

答案 3 :(得分: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);
        }
    });
}

答案 4 :(得分:0)

或使用jquery来做到这一点

 if ($('#LoopPlayback').is(':checked'))
  //your stuff

答案 5 :(得分:0)

使用jQuery的更多功能更加清晰:

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