一串js代码在外面可以用,在success:function(data)里面失效,怎么解决

qq_29581167 2015-09-04 09:56:33
// //登录完毕,最后一块变为“我的”首页
// $(".loadBtn").click(function(){
//
// $(this).parent().parent().fadeOut()
//
// $(this).parent().parent().next().fadeIn(1000)
//
// });

这是原来的,这个点击之后那个版块有切换,然后把它发在下面就不行了,里面的alert都是有反应的,但是那两个语句就失效了
var lx=1;

//1.登录
$(".loadBtn").click(function(){

lx=1;
var uname=$("#uname").val()
var pwd=$("#Pwd").val()
$.ajax({
url:"index.ashx",
type:"POST",
data:{"type":lx,"name":uname,"password":pwd},
// dataType: "text",
success:function(data){
if(data=='2')
{alert('登录失败')
$(this).parent().parent().fadeOut()

$(this).parent().parent().next().fadeIn(1000)
}
else
{

$(this).parent().parent().fadeOut()

$(this).parent().parent().next().fadeIn(1000)
alert('登录')
}
}

});

});
...全文
741 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2015-09-04
  • 打赏
  • 举报
回复
$(this)用错了啊 你应该先定义 var _THIS = $(this);

$(".loadBtn").click(function(){ 
var _THIS = $(this);
            lx=1;
            var uname=$("#uname").val()
            var pwd=$("#Pwd").val()
            $.ajax({
                    url:"index.ashx",
                    type:"POST",
                    data:{"type":lx,"name":uname,"password":pwd},      
//            dataType: "text",   
            success:function(data){
                if(data=='2')
                {alert('登录失败')
                _THIS.parent().parent().fadeOut()

_THIS.parent().parent().next().fadeIn(1000)
                }
               else 
                {
              
_THIS.parent().parent().fadeOut()

_THIS.parent().parent().next().fadeIn(1000)
              alert('登录')
                }
            }
           
        });
    
    });
  • 打赏
  • 举报
回复
就this问题,我不认为 js 的 this 是学问。我认为它其实是魔鬼。 js 的 this 是毫无规范可言的。如果你在某些别的 JQuery.forEach 等函数的回调中,你会看到 this 就没有被乱改。而在 $.ajax 等函数中,你可能就发现 this 被改变了。 js 语言并没有规范去规定 this 的用法,相反地,它的 this 是诡异地可以随便设置的。既然它没有规范,那么也就谈不上“学问”。你必须一个一个地去熟悉各种函数的回调中是否可能乱改 this。 如果你没有把握,那么凡是调用别人的函数之前,你都写上一行
var self = this;
然后在回调中只用 self 而不用 this,这样比较保险。
游离失所 2015-09-04
  • 打赏
  • 举报
回复
this的问题。。 js的this是一门学问。。简单的来说,哪里调用,this就表示哪里 success里面的this是ajax对象。。 你放在外面是windows对象。。
  • 打赏
  • 举报
回复
自己使用 vs 开发工具逐行跟踪调试一下吧。如果你有进一步的问题,请贴出调试画面来! 提醒一点,语句的结束要写分号(除非是语句块结束)。

1,978

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧