JS this作用域以及GET传输值过长的问题解决方法
更新时间:2013年08月06日 16:20:45 作者:
专IE7浏览器,IE URL参数过长问题,引发HTTP Status 122报错;this作用域问题,对应的解决方法如下,感兴趣的朋友可以参考下,希望对大家有所帮助
在开发项目的时候,前端遇到两个比较隐蔽的问题。
问题一.专IE7浏览器,IE URL参数过长问题,引发HTTP Status 122报错
原因:在IE6.8下没有什么问题,但在IE7就不兼容get参数过长,google上说“Don't use the GET method in Ajax Apps, if you can void it, because IE7 craps out with more than 2032 characters in a get string”
解决方法:
把原项目采用jsonp get的数据方法改为 常规post数据方法
问题二. this作用域问题
原因:this如果不是在对象内部默认为是 window这个大对象,如下面的this如是放在一个ajax的里面指的是当前域名ajax对象
解决方法:
var test={};
test.getflash = 2;
test.test =function(){
alert(this.getflash); //2
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert(this.getflash); //等于undefine
}
});
}
解决方法:
test.test =function(){
var thisValue = this;
alert(thisValue.getflash); //2
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert(thisValue.getflash); //2
}
});
}
问题一.专IE7浏览器,IE URL参数过长问题,引发HTTP Status 122报错
原因:在IE6.8下没有什么问题,但在IE7就不兼容get参数过长,google上说“Don't use the GET method in Ajax Apps, if you can void it, because IE7 craps out with more than 2032 characters in a get string”
解决方法:
把原项目采用jsonp get的数据方法改为 常规post数据方法
问题二. this作用域问题
原因:this如果不是在对象内部默认为是 window这个大对象,如下面的this如是放在一个ajax的里面指的是当前域名ajax对象
解决方法:
复制代码 代码如下:
var test={};
test.getflash = 2;
test.test =function(){
alert(this.getflash); //2
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert(this.getflash); //等于undefine
}
});
}
解决方法:
复制代码 代码如下:
test.test =function(){
var thisValue = this;
alert(thisValue.getflash); //2
$.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert(thisValue.getflash); //2
}
});
}
相关文章
JS使用对象的defineProperty进行变量监控操作示例
这篇文章主要介绍了JS使用对象的defineProperty进行变量监控操作,结合实例形式分析了对象defineProperty方法的功能及简单使用技巧,需要的朋友可以参考下2019-02-02使用JSON.parse将json字符串转换成json对象的时候会出错
使用JSON.parse将json字符串转换成json对象的时候会出错,主要是双引号,回车换行等影响明显,左尖括号和右尖括号也会导致显示问题2014-09-09
最新评论