2012-08-07 77 views
0

我在使用php和javascript Ajax發送電子郵件的html表單字段中填寫我的複選框的值時遇到了一些麻煩。如果我將代碼形式保留爲Javascript,則所有值均顯示爲「是」,代碼顯示爲「否」。我是PHP新手,希望得到任何幫助。謝謝。使用php和javascript Ajax發送複選框值時遇到麻煩

HTML

<form method="post" action="test.php" name="contactform" id="contactform"> 
<input name="extension" type="checkbox" id="extension" value="extension">Extension<br> 
<input name="wallmount" type="checkbox" id="wallmount" value="wallmount">Wall Mount<br> 
<input name="deskmount" type="checkbox" id="deskmount" value="deskmount">Desk Mount 
</form> 

PHP

$extension=($_POST['extension'])?"Extension: Yes":"Extension: No"; 
$wallmount=($_POST['wallmount'])?"Wallmount: Yes":"Wallmount: No"; 
$wallmount=($_POST['wallmount'])?"Wallmount: Yes":"Wallmount: No"; 
$deskmount=($_POST['deskmount'])?"Deskmount: Yes":"Deskmount: No"; 

$msg.="$extension";; 
$msg.="$wallmount";; 
$msg.="$deskmount";; 

javascipt的

jQuery(document).ready(function(){ 

$('#contactform').submit(function(){ 

    var action = $(this).attr('action'); 

    $('#contactform #submit').attr('disabled','disabled'); 

    $("#message").slideUp(750,function() { 
    $('#message').hide();   

    $.post(action, { 

      extension: $('#extension').serialize(), 
     wallmount: $('#wallmount').serialize(), 
     deskmount: $('#deskmount').serialize(), 

     subject: $('#subject').val(), 
     verify: $('#verify').val() 
    }, 
     function(data){ 
      document.getElementById('message').innerHTML = data; 
      $('#message').slideDown('slow'); 
      $('#contactform #submit').attr('disabled',''); 
      if(data.match('success') != null) $('#contactform').slideUp('slow'); 

     } 
    ); 

    }); 

    return false; 

}); 

});

回答

0

您正在包括每個複選框的值。你應該測試看看它是否被檢查。

更一般地說,你應該讓jQuery從你的表單爲你構建你的數據對象。

$.post(action, $('form').serialize()); 
+0

感謝答覆,我是否需要更換了 '擴展:$(' #擴展 ')VAL(),' 你的代碼 '的數據:$(' myformname」 )。連載()'? – user1581821 2012-08-07 12:18:53

+0

哦,沒有注意到你使用$ .post而不是$ .ajax。編輯應該修復它。 – Quentin 2012-08-07 12:19:58

+0

如果我用你的代碼替換'$ .post(action,'),我得到一個語法錯誤 – user1581821 2012-08-07 12:35:12

0

嘗試

$.post(action, { 
extension: $('#extension').attr('checked'), 
wallmount: $('#wallmount').attr('checked'), 
deskmount: $('#deskmount').attr('checked'), 
}, 
+0

感謝您的回覆,值仍然發送爲Yes,即使沒有選中框 – user1581821 2012-08-07 12:20:04