javascript - 登录代码在 Internet Explorer 中不起作用,但在 Chrome 和 Firefox 中起作用

标签 javascript php ajax internet-explorer

我希望这不是一个太乏味的问题...我正在处理其他人编写的代码。问题很简单,它在 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/

相关文章:

php - 创建不创建 ZIP 的 ZIP 文件脚本(无错误)

javascript - 如何使用jQuery来防止空格键进入空格?

javascript - 使用 jQuery 从过滤器菜单创建键/值对

javascript - 从 Vue.JS 中的子对象收集值并分配给父对象键

javascript - 我如何在 Angular2 中使用 jQuery 插件?

php - AJAX 聊天框向上滚动问题

javascript - 将变量放入外部工作表中

php - PayPal 沙盒计费协议(protocol)待定

php - 使用多个 Ajax 调用更新页面内容,这些调用取决于先前调用的输出

PHP Ajax多文件上传超时或内存限制