这个getJson调用有什么问题

时间:2011-07-23 16:00:47

标签: javascript ajax jquery getjson

这是我的jQuery

$.getJSON('/users/delete_preapproval', { 
  preapproval: $(this).attr('id'), id: $(this).attr('id') }, 
function(data) {
complete: function(){
     console.log('ssss');
  }
});

一切正常,服务器处理请求,但完成无效...我没有得到我的console.log显示。在成功的ajax调用之后,我基本上需要完成或成功触发

编辑:这是我的整个点击事件:

$('.delete_preapproval').click(function(e){
    var count = $(this).closest('.request_count').attr('data');
    if(count > 0){
        if(count == 1){
            var plural = 'request';
        }else{
            var plural = 'requests';
        }           
        if (confirm('Are you sure you want to delete this preapproval you have ' + count + ' active ' + plural)){
                $.getJSON('/users/delete_preapproval', { 
                    preapproval: $(this).attr('id'), 
                    id: $(this).attr('id') 
                }, 
                function(data) {
                     console.log('ssss');
                });

     }else{
            return false;
        }
    }else{
        $.getJSON('/users/delete_preapproval', { preapproval: $(this).attr('id'), id: $(this).attr('id') }, function(data) {
      window.location.reload();
        });
    }
    e.preventDefault();
});

3 个答案:

答案 0 :(得分:2)

实际上你应该得到一个语法错误。删除complete:

$.getJSON('/users/delete_preapproval', { 
    preapproval: $(this).attr('id'), 
    id: $(this).attr('id') 
}, 
function(data) {
     console.log('ssss');
});

complete:正在此行创建label [docs]。删除标签将是:

function(data) {
    function(){
        console.log('ssss');
    } 
}

你看到在调用外部函数时从不执行内部函数(除语法错误外)。

更新:还要确保您返回的数据是正确的JSON。否则jQuery无法解析它,也不会调用回调。

答案 1 :(得分:1)

您需要删除complete:和之后的函数调用。所以更像是:

$.getJSON('/users/delete_preapproval', { 
  preapproval: $(this).attr('id'), id: $(this).attr('id') }, 
function(data) {
     console.log(data);
});

答案 2 :(得分:1)

你为什么不试试

$.ajax({
    type: 'post',
    url: "/users/delete_preapproval",           
    dataType: 'json',
  data: {preapproval : $(this).attr('id'), id : $(this).attr('title')},
    complete: function () { 
        console.log('ssss');
    }           
});

这应该有用......