【发布时间】:2018-03-02 13:04:05
【问题描述】:
以下是我的脚本。我正在使用 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');
}
});
}
});
【问题讨论】:
-
如果 btnSave 是提交按钮,则需要将脚本更改为
$("#empForm").on("submit",function(e) { e.preventDefault(); var url = $(this).attr('action');....并 REMOVE async : false, -
在您的 ajax 请求中使用 async : false 属性,您正在使您的请求同步。这意味着整个应用程序将冻结,直到数据集进入您的最后。删除该属性或将其设置为 true。 (默认为真)
-
我什至不明白为什么jQuery首先允许设置
async:false。世界上的每个新秀都将其设置为false,因为他们可以。 -
$.ajaxPrefilter(function(options, original_Options, jqXHR) { options.async = true; });这段代码能解决我的问题吗?
-
我已经添加了这段代码并删除了 async:false 现在的问题是记录被存储在数据库中,但起初当我点击保存按钮时它显示“无法添加数据”。但是,刷新页面后,它确实被添加到数据库中。你能告诉我问题出在哪里吗?
标签: javascript jquery ajax codeigniter xmlhttprequest