我刚刚注意到付款表单中存在严重错误。当某人从选择字段更改其国家/地区时,它会自动将“县”文本字段替换为“州”选择框(如果国家/地区=美国)或“地区”选择框(如果国家/地区=加拿大)。这是通过ajax完成的。
$('#billing_country').change(function(){
if($(this).val()==223) {
$.ajax({
type : 'POST',
url : '//localhost/mslv2/ajax/states.php',
data : 'type=billing',
success : function(data) {
$("#billing_country_div").html(data);
}
});
};
});
states.php文件
$states = '<label for="'.$_POST['type'].'_county">State*</label>
<select name="'.$_POST['type'].'_county">
<option value="0" selected="selected">Select a State</option>';
$state_qry = mysqli_query($con,"SELECT `zone_code`,`zone_name` FROM `zones` WHERE `zone_country_id`=223");
while($state_row = mysqli_fetch_assoc($state_qry)) {
$states .= '<option value="'.$state_row['zone_code'].'">'.$state_row['zone_name'].'</option>';
}
$states .= '</select>';
echo $states;
所以我注意到,当表单提交时,因为字段是即时进入的,所以当表单提交时,它们不会被拾取,从而产生错误。
我认为的一个解决方案是加拿大被选中,然后我可以刷新页面,但后来我仍然无法思考如何将其传递给php代码,以便知道显示加拿大领土。
另一个解决方案是保持
<input type="text" id="billing_county" name="billing_county" value="<?php echo $billing_county; ?>" />
文本字段,然后隐藏它,然后显示这些选择框,并将其值更新到文本字段中,这应该有效。但我想知道是否有一个更简单的解决方案。