日期:2014-05-16  浏览次数:20879 次

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('[已通过]');//这边是想要实现的效果,但是没有
}
});
});