ajax使用函数中的this变量问题及其解决方法

原创 2015年11月21日 15:28:21

我们经常在使用ajax时,需要将里面返回的变量再重新赋值给函数中的公有变量,这边有个例子,大家可以看看


function classA {

this.name = "classA";

}


classA.prototype.getMessage = function() {

$.ajax({   
                type:"post",     
                url:
//请求url地址,可以为servlet地址,   
                success:
function(msg) {

  //msg为从servlet获取到的数据

   this.name = msg; //此时想将获取到的信息赋值给name属性

},   
                error:function(){   
                    alert("wrong");   
                }   
            });  

}


然而此时系统报错,提示找不到name属性"cannot read the property name",原因是因为此时的this所指的上下文是ajax作用域内的上下文,并不是classA中的上下文,因此此时找不到name属性就正常了。


这里需要对getMessage稍微做些调整就行

classA.prototype.getMessage = function() {

        var myname = this.name; //此时将this.name付给另外一个var变量

$.ajax({   
                type:"post",     
                url:
//请求url地址,可以为servlet地址,   
                success:
function(msg) {

  //msg为从servlet获取到的数据

   myname = msg; //此时想将获取到的信息赋值给name属性

},   
                error:function(){   
                    alert("wrong");   
                }   
            });  

}


这样在ajax不会再使用this指针,从而不会产生上面this指代错误的问题。var myname在ajax作用域相当于全局变量,可以直接使用。

jquery ajax 中 $(this) 不起作用

忍不住要分享一下一个奇怪的现象,那就是$(this)与ajax的冲突。 平时用$(this)的时候感觉很方便,很爽。例如,我们可以这样轻易获取某个元素的value值,$(this).val();可以...
  • weizhongxing6
  • weizhongxing6
  • 2017年03月03日 10:26
  • 1651

ajax函数里不能用this调用

前段时间,看到J哥博客中有类似的说法,当时没在意,今天遇到了,Mark一下,在ajax的返回方法中,this调用是不起作用的,也就是说,$(this)这样的写法获取不到任何值。正确的做法是$('#di...
  • UP19910522
  • UP19910522
  • 2014年07月29日 17:51
  • 2153

ajax回调函数中$(this)没有作用的解决办法

下面这段jquery代码,是可以达到预期效果的。 $(".derek").each(function(){ $(this).click(function(){ var params = $...
  • Derek_BMW
  • Derek_BMW
  • 2014年04月01日 22:57
  • 1328

ajax中中返回方法中不能使用this

if ($(this).val() != "") { if((phoneTest.test(userName)) || (emailTest.test(userName))){ $.ajax...
  • wenruo95
  • wenruo95
  • 2015年02月02日 21:00
  • 804

[置顶]Ajax回调数据赋值给变量的问题

写这篇文章是因为我上面Ztree的文章引发的我对js的研究,不明白的可以先看看上面Ztree的返回数据那块,因为是同一个小例子,上篇是所有的代码,上图: 我声明全局变量tree,在Success...
  • fengxiao4444
  • fengxiao4444
  • 2014年07月25日 11:32
  • 305

$.ajax()给全局变量赋值问题解决示例

今天在做项目时,遇到了一个问题。我用的是ajax,要在$.ajax({里面给一个全局变量赋值,结果死活赋值不上,纠结了好半天,后来上网查了查,才知道,ajax默认是异步请求,(当要赋值时,此时的值没有...
  • qq_26222859
  • qq_26222859
  • 2016年05月31日 10:02
  • 5716

ajax跨域问题以及解决方案

在工作中,大家应该都遇到过ajax跨域问题,浏览器的错误如下: XMLHttpRequest cannot load http://目标地址 No 'Access-Control-Allow-Orig...
  • csdn_ds
  • csdn_ds
  • 2017年06月24日 14:14
  • 3404

Ajax技术(5)--Ajax使用过程中常见问题汇总

在看文章前,先指定一个通用的变量xhr,xhrajax对象。测试浏览器:ie为ie6,firefox为2,其他的未测试。统称ie6为ie,firefox2为ff。 最经典的就是ie下的缓存问题了...
  • jdfkldjlkjdl
  • jdfkldjlkjdl
  • 2014年10月26日 21:02
  • 1336

Ajax中的eval函数的用法

eval的定义和使用 Eval它是用来计算某个字符串,并且执行其中的JavaScript代码。 语法: 1) eval函数接受一个string这个参数,并且这个参数是必须的,这个参数...
  • moxiaoya1314
  • moxiaoya1314
  • 2016年12月30日 09:21
  • 371

解决Ajax 跨域问题 - JSONP原理解析

解决Ajax 跨域问题 - JSONP原理解析为什么会有跨域问题? - 因为有同源策略 同源策略是浏览器的一种安全策略,所谓同源指的是 请求URL地址中的 协议, 域名 和 端口 都相同,只要其中之一...
  • qq_16415157
  • qq_16415157
  • 2016年11月11日 23:24
  • 6101
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ajax使用函数中的this变量问题及其解决方法
举报原因:
原因补充:

(最多只允许输入30个字)