2013-02-26 68 views
0

在使用JSON时,我无法获得选中哪个复选框。

这是我的HTML

<form id="patronReg" action="" method="get" onsubmit="jsquicksub(this); return false;"> 
     <input type="checkbox" name="__gold" value="gold" id="patron-gold"/><strong>Gold patrons </strong>$3,000 (+GST for businesses)<br /> 
     <input type="checkbox" name="__silver" value="silver" id="patron-silver" /><strong>Silver patrons </strong>$1,500 (+GST for businesses)<br /> 
     <input type="checkbox" name="__families" value="families" id="patron-families" /><strong>Families and individual </strong>$500<br /> 

我的JSON的JavaScript文件看起来像这样

function jsquicksub(po_form) { 

if (gb_ajaxbusy) 
    return false; 

gb_ajaxbusy = true; 


var lo_request = {}; 
lo_request.g = $(po_form).find('#patron-gold').val(); 
lo_request.s = $(po_form).find('#patron-silver').val(); 
lo_request.f = $(po_form).find('#patron-families').val(); 


$(po_form).fadeTo(200, 0.3); 

$.getJSON('/patron-form-process', lo_request, function(po_result) { 

    gb_ajaxbusy = false; 
    $(po_form).fadeTo(0, 1); 

    if (!po_result.success) { 
     $('#errorReport').show(); 
     document.getElementById('errorReport').innerHTML = po_result.content; 
     //alert(po_result.content); 
     return false; 
    }else{ 
     setTimeout(function() { 
       $.modal.close(); 
     }, 2500); 
    } 
    // replace form with thankyou message 
    $(po_form).replaceWith(po_result.content); 
    // empty errrReport element 
    $('#errorReport').hide(); 

}); } 

而且我的PHP形式处理的文件是这样的

// function gets passed values after validation and returns a message to the user on screen 
function jsonreturn($pb_success, $ps_content = null) { 

$lo_result = (object) array('success'=>$pb_success, 'content'=>$ps_content); 

ob_clean(); 
echo json_encode($lo_result); 
exit; 

} // end jsonreturn() 
// membership type 

$ps_gold = isset($_GET['g'])? $_GET['g']: null; 
$ps_families = isset($_GET['f'])? $_GET['f']: null; 
$ps_families = isset($_GET['f'])? $_GET['f']: null; 

if ($ps_gold == 'gold') { 
    $ps_membership = 'Gold patron'; 
} 
elseif ($ps_silver == 'silver') { 
    $ps_membership = 'Silver patron'; 
} 
elseif ($ps_families == 'families') { 
    $ps_membership = 'Families and individual'; 
} 
else { 
    $ps_membership = ''; 
} 

所以我的问题是,如何我将获取选中的复选框值到php文件,当它从窗体到javascript文件,然后到php。这可能是一个非常愚蠢的问题!但我对JSON非常陌生。一旦我到达php文件,我正在使用phpmailer在电子邮件中发送来自我的表单的所有值。它工作得很好!除了复选框部分!

感谢您的帮助!

回答

0

处理这种情况的一种方法是使用Jquery Checked Selector来选择哪个复选框。例如:

// ... 
var lo_request = {}; 
lo_request.g = $(po_form).find('#patron-gold').is(':checked'); 
lo_request.s = $(po_form).find('#patron-silver').is(':checked'); 
lo_request.f = $(po_form).find('#patron-families').is(':checked'); 

$.getJSON('/patron-form-process', lo_request, function(po_result) { 
// ... 

然后从PHP端:

$ps_gold = isset($_GET['g'])? $_GET['g'] === 'true' : false; 
$ps_silver = isset($_GET['s'])? $_GET['s'] === 'true' : false; 
$ps_families = isset($_GET['f'])? $_GET['f'] === 'true' : false; 

if ($ps_gold) { 
    $ps_membership = 'Gold patron'; 
} 
elseif ($ps_silver) { 
    $ps_membership = 'Silver patron'; 
} 
elseif ($ps_families) { 
    $ps_membership = 'Families and individual'; 
} 
else { 
    $ps_membership = ''; 
} 

不过,我会指出,这似乎为决定$ps_membership逻辑似乎本身更借朝比复选框单选按钮,因为每个选项是互斥的。这就是说,上面的解决方案应该做你需要的。

+0

非常感谢!这是我错过了!我认为我的设计师是在看起来像复选框的单选按钮之后。我可以将它们的外观改为方形吗?我知道这个解决方案并不完美,但我只是想让这部分工作,然后选择复选框寻找单选按钮!非常感谢你的帮助!! – 2013-02-26 07:20:07