同步XMLHttRequest错误

时间:2018-03-02 13:04:05

标签: javascript jquery ajax codeigniter xmlhttprequest

以下是我的脚本。我正在使用codeigniter,一个php框架以及jquery和ajax。任务是通过ajax将员工详细信息添加到数据库,但我收到此错误:

  

主线程上的同步XMLHttpRequest因不推荐使用   它对最终用户的体验产生不利影响。获得更多帮助   http://xhr.spec.whatwg.org/

    <script>
    $(function(){

        $('#btnAdd').click(function(){
        $('#myModal').modal('show');
        $('#myModal').find('.modal-title').text('Add New Employee');
        $('#empForm').attr('action','<?php echo base_url() ?>addEmployee')
    });


    $('#btnSave').click(function(){
        var url = $('#empForm').attr('action');
        var data = $('#empForm').serialize();


    //Validations
       var empName = $('input[name="emp_name"]');
       var empAdd = $('input[name="emp_address"]');
       var result ='';
       if(empName.val()==''){
           empName.parent().parent().addClass('has-error');
       }
       else{
           empName.parent().parent().removeClass('has-error');
           result +='1';
       }

       if(empAdd.val()==''){
           empAdd.parent().parent().addClass('has-error');
       }
       else{
           empAdd.parent().parent().removeClass('has-error');
           result +='2';
       }
      if(result=='12'){
          $.ajax({
          type : 'ajax',
          method : 'post',
          url :url,
          data : data,
          async : false,
          dataType : 'json',
          success: function(success){
              if(response.success){
                   $('#myModal').modal('hide');
                   $('#empForm')[0].reset();
                   index();
              }
              else{
                  alert('error');
              }
        },
        error: function(){
               alert('Could Not Add Data');
        }
     });
  }
});

3 个答案:

答案 0 :(得分:0)

您收到此错误是因为您的Ajax请求是同步的(asyc: false)。

该错误甚至会为您提供一个链接,您可以在其中详细了解它..

Throws an InvalidAccessError exception if async is false

参考:https://xhr.spec.whatwg.org/#the-open()-method

要解决您的问题,您应该将async设置为true或者根本不指定。

答案 1 :(得分:0)

解决方法(async:true)将显示加载图像并成功隐藏加载图像。

建议不要使用async:false,因为它会停止所有js操作并停止服务器的响应。

答案 2 :(得分:0)

  

输入:&#39; ajax&#39;,

type应该是GET或POST,并且只有在你的jquery版本是&lt; 1.9.1

  

async:false,

你不需要改变&#34; asynch&#34;行为,因为,毕竟Ajax中的第一个字母代表&#34;异步&#34;