jquery ajax的一个问题
html类似这种,<span class="cc"><?php if ($xx==1) { ?><a href="javascript:void(0);" class="ccc">通过</a><?php } else { echo '[已通过]'; ?></span>
然后想法是点击通过之后,把通过改成已通过。
$('.cc .ccc').click(function(){
alert($(this).html())
//这边弹出框是可以看到html代码
$.ajax({
url:'xxx/xxx',
type:'post',
dataType:'json',
data:'xx=xx',
success:function(data){
alert($(this).html());
//为什么这边弹出框的内容就变成了undefined了呢。
$(this).parent('.cc').html('[已通过]');
//这边是想要实现的效果,但是没有
}
});
});
求解啊,为什么呢。ajax是把$xx在数据库里面的值改变了,难不成是这个原因嘛?
------解决方案--------------------<span class="cc"><?php if ($xx==1) { ?><a href="javascript:void(0);" class="ccc">通过</a><?php } else { echo '[已通过]';
} ?></span>
少一个封闭符号。ajax报错?
------解决方案--------------------因为你有 dataType:'json',
success:function(
data){
alert($(this).html());
这个 data 是 json 对象,自然不会有 html 方法
何况你实际返回的是 html 串,并不会被 jq 正确解析
$(this).parent('.cc').html('[已通过]');
这里的 this 也存在一些问题
按你的 php 代码,你只需
$('.cc .ccc').click(function(){
$(this).load(
url:'xxx/xxx',
type:'post',
data:'xx=xx'
)
}
就可以了
------解决方案--------------------$('.cc .ccc').click(function(){
var t = this;
alert($(this).html()) //这边弹出框是可以看到html代码
$.ajax({
url:'xxx/xxx',
type:'post',
dataType:'json',
data:'xx=xx',
success:function(data){
alert($(t).html());//为什么这边弹出框的内容就变成了undefined了呢。
$(t).parent('.cc').html('[已通过]');//这边是想要实现的效果,但是没有
}
});
});