JS this作用域以及GET传输值过长的问题

来源:互联网 发布:mac 设置输入法皮肤吗 编辑:程序博客网 时间:2024/05/29 01:55

在开发项目的时候,前端遇到两个比较隐蔽的问题。
问题一.专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对象
解决方法:
 

PHP Code复制内容到剪贴板
  1. var test={};  
  2. test.getflash = 2;  
  3. test.test =function(){  
  4.     alert(this.getflash); //2  
  5.     $.ajax({  
  6.        type: "POST",  
  7.        url: "some.php",  
  8.        data: "name=John&location=Boston",  
  9.        success: function(msg){  
  10.          alert(this.getflash); //等于undefine  
  11.        }  
  12.     });  
  13. }  
  14.   
  15. 解决方法:  
  16. test.test =function(){  
  17.     var thisValue = this;  
  18.     alert(thisValue.getflash); //2  
  19.     $.ajax({  
  20.        type: "POST",  
  21.        url: "some.php",  
  22.        data: "name=John&location=Boston",  
  23.        success: function(msg){  
  24.          alert(thisValue.getflash); //2  
  25.        }  
  26.     });  
  27. }