2012-09-13 71 views
1

我是新來的JavaScript,我似乎無法弄清楚我失蹤了。我正在試驗jquery的ajax函數。我被卡在這段代碼上了。這個想法是,當一個複選框被選中時,它會執行一個php腳本並將該腳本的狀態輸出到「狀態」div。Javascript複選框功能:「缺少:屬性ID後」

我花了最後一個小時來看看我的代碼,我看不到我錯過了任何東西。當然,這可能不會幫助我的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) 

謝謝!

+0

你不能讓if語句與阿賈克斯選項混合。 – j08691

回答

3

你需要refocor一點;如果需要進行賦值,則不像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, 
    ... 
}); 
+0

這就是我喜歡stackoverflow的原因。我懷疑我會想出來。這和我希望的完全一樣。 –

1

你不能把if語句放在對象文字中。將它的字面阿賈克斯選項:

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); 
     } 
    }); 
} 
2

你可以把它改成這樣它確實是這樣的「如果」內聯:

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

或使用jQuery做

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

這應該工作:

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

這是對象a使用更多的jQuery的迷死

{ 
    url:..., 
    type:..., 
    data:..., 
    success:... 
} 
+0

+1,很好的使用'.val'(儘管它加載了一個heaver jQuery對象;; -p) –

0

有點清潔劑:第二,你可以不寫代碼字段之間

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