我希望这不是一个太乏味的问题...我正在处理其他人编写的代码。问题很简单,它在 Chrome 和 Firefox 上运行良好,但在 Internet Explorer 上运行不佳。发生的情况是,当单击“提交”时,页面会重新加载并重新开始。我不知道为什么?有人可以帮忙吗?
这是 HTML:它本质上是两个询问电话号码和 pin 码的字段...
<form name="form1" id="form1" onSubmit="get_client_data(); return false;" method="post" >
<input type="hidden" name="random_1" id="random_1" value="<?=$session['random_1']?>" />
<h2>ENTER THE NUMBER YOU’D LIKE TO REFILL</h2>
<input placeholder="ENTER YOUR PHONE NUMBER:" name="phone_number" id="phone_number" type="text" class="form_input" onBlur="convert_phone(this.value,'phone_number');" />
<h2>ENTER YOUR PIN</h2>
<input placeholder="ENTER YOUR PIN CODE:" name="pin_id" id="pin_id" type="text" class="form_input" onBlur="check_validity(this.value, 'pin_id');" /><br>
<input name="" type="submit" value="GO" class="right button go" id="step_1" />
</form>
onSubmit 发送到以下 javascript 函数:(这使用 ajax 来确定数字和 pin 是否匹配,如果匹配 - 它将启用 HTML 的其他部分(此处未给出))
function get_client_data(){
var pin_id = $('#pin_id').val();
var phone_number = $('#phone_number').val();
var random_1 = $('#random_1').val();
$.ajax({
type: "POST",
url: "front_end_functions.php",
data: "phone_number="+phone_number+"&plan="+plan+"&pin_id="+pin_id+"&random_1="+random_1+"&function=get_client_data",
dataType: 'json',
success: function(msg){
if(msg == 'error') {
alert('error');
return false;
} else if(msg == 'error2') {
alert('error');
return false;
} else {
$('#div_1').addClass('deselect');
$('#div_2').removeClass('deselect');
$('#phone_number').attr('disabled','disabled');
$('#pin_id').attr('disabled','disabled');
$('#step_1').attr('disabled','disabled');
$('#phone').removeAttr('disabled');
$('#carrier').removeAttr('disabled');
$('#plan').removeAttr('disabled');
$('#step_2').removeAttr('disabled');
$('#phone').val(msg[1]);
$('#carrier').val(msg[2]);
$('#plan').val(msg[3]);
}
}
});
}
Ajax 发送到的函数如下所示(如您所见,我正在使用 PDO - 这会导致问题吗?):
if($_REQUEST['function'] == 'get_client_data') {
$random_1 = $_REQUEST['random_1'];
$ip = getenv('HTTP_CLIENT_IP')?:
getenv('HTTP_X_FORWARDED_FOR')?:
getenv('HTTP_X_FORWARDED')?:
getenv('HTTP_FORWARDED_FOR')?:
getenv('HTTP_FORWARDED')?:
getenv('REMOTE_ADDR');
$query = $db->prepare("SELECT * FROM sessions WHERE id = ?");
$query->execute(array($ip));
$session = $query->fetch();
if($session['random_1'] == $random_1) {
$phone_number = $_REQUEST['phone_number'];
$pin_id = $_REQUEST['pin_id'];
$sql = "SELECT c.cid, cp.phone, cr.carrier_name, p.plan_name ,cp.carrier as cr_id,cp.plan as p_id
FROM clients c, client_phones cp , carriers cr, plans p
WHERE cp.phone = ?
AND cp.client_id = ?
AND cp.deleted = 0
AND c.cid = cp.client_id
AND c.status = 'a'
AND cr.carrier_id = cp.carrier
AND p.plan_id = cp.plan";
$query = $db->prepare($sql);
$query->execute(array($phone_number, $pin_id));
$result = $query->fetch();
if(!empty($result)){
$_SESSION['client'] = $result;
echo json_encode($result);
}else{
echo json_encode('error');
}
}else{
echo json_encode('error2');
}
}
谢谢!
最佳答案
是的 - 解决了,在 IE 上使用调试器(抱歉之前没有这样做)它说 ajax 代码的数据部分中的“计划”未定义。所以这导致了错误。 有趣的是 Chrome 和 Firefox 没有这个问题...
关于javascript - 登录代码在 Internet Explorer 中不起作用,但在 Chrome 和 Firefox 中起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34887309/