IE edge浏览器ajax post提交不带参数问题
1、在Google浏览下可以正常访问,但IE edge下第一次点击登入时,参数没有传(所以的接口都会偶然的出现该问题,在开发者模式下必现)。
2、主要代码(jquery用的是1.8.3)
js:点击事件
$("#dologin").on("click", function () {
var username = $("#usrname").val(),
param = {};
if (!username) {
dialog({
quickClose: true,
content: '请输入K账号',
onclose: function () {
$("#usrname").focus();
},
follow: $("#usrname")[0]
}).show();
return;
}
if($("#password").length>0 && !$("#password").val()){
dialog({
quickClose: true,
content: '请输入密码',
onclose: function () {
$("#password").focus();
},
follow: $("#password")[0]
}).show();
return;
}else if($("#password").length>0 && $("#password").val()){
param["password"] = $("#password").val();
}
param["username"] = $("#usrname").val();
Global.postData({
url: "/az/main/doLogin.do",
params: param,
success: function (data) {
var info = data.obj;
var userInfo = {
prId: info.prId,
roleType: info.sheRoleId,
chineseName: info.chineseName || "",
firstName: info.firstName || "",
lastName: info.lastName || "",
userId: info.userId,
loginTime: new Date().Format("yyyy-MM-dd hh:mm:ss")
};
W.localStorage.setItem("userInfo", JSON.stringify(userInfo));
window.location.href = 'main.do';
return false;
}
});
});
Global.postData方法:
/**
* ajax请求
* @param {Object} config:
* {String} url:请求路径
* {Json} params:提交参数
* @param {String} type:P(默认)-mainMBd加loading图标;M-mainM加loading图标,NO-没有loading,F-满屏,D-dialog页面
* @callback {function} success:返回true时的回调函数
* {Json} data:请求返回的参数
* @callback {function} errorFnc:返回false时的回调函数
* {Json} data:请求返回的参数
*/
postData: function (config, type) {//ajax方法
config = config || {}, type = type || "F";
var url = config.url || '', params = config.params || {},
async = config.async === false ? false : true,
_t = this;
if (!url) {
console.log("无请求地址!");
return;
}
console.info(config.params);
$.ajax({
type: 'POST',
url: url + "?time="+new Date().getTime(),
// stringify
dataType: 'json',
data: params,
async: async,
cache:false,
beforeSend: function (xhr) {
if(type=='F'){
_t.addFullLoading();
}
},
success: function (data) {
if (config.formatterData) {
data = config.formatterData.call(this, data);
}
if(type=='F'){
_t.delFullLoading();
}
if ((data instanceof Array) || (JSON.stringify(data) == "{}")) {
data = {
success: true,
msg: MsgEnum.SUCCESS.getMsg(),
rows: data
}
} else if (data == undefined || data == null) {
data = {
success: false,
msg: "操作错误"
}
}
var flag = true;
if (data.success) {
if (config.success) {
flag = config.success.call(this, data);
}
if(flag === false){
return ;
}
dialog({
title:"成功",
width:200,
height:50,
content:data.msg,
cancelValue:"确认",
cancel:true
}).showModal();
} else {
if (config.errorFnc) {
flag = config.errorFnc.call(this, data);
}
if(flag === false){
return ;
}
dialog({
title:"错误",
width:200,
height:50,
content:data.msg || '操作失败!',
cancelValue:"确认",
cancel:true
}).showModal();
}
}
});
}
3、问题截图
首先在点击事件中发现,在ajax请求的时候都已经传入参数的了,如下图
然后后端并没有接收到,后来发现网络中对应的接口的确没有传递参数,如下图。但是如上图的确在ajax请求时参数并不为空。
4、如果是jQuery有问题,或者我ajax用错的话,那所有浏览器都会有问题,但只有IE-edge浏览器有这个问题,且第二次点击就能够正常。
由于自己对ie兼容问题掌握不够到位,所以没有一点解决思路。故劳烦广大道友帮忙给一点方法或者思路都可、或者这个可能会由那些问题引起都可以告诉我,我会自己验证的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论