我的getJSON代码在jquery 1.4.2中不起作用

时间:2010-03-23 17:04:26

标签: jquery getjson

这是我关于stackoverflow的第一个问题。我只是想知道为什么我的getJSON代码不适用于jQuery 1.4.2,它与jQuery 1.3.2一起顺利运行

所以这是我的代码

$(document).ready(function(){
    $('td.hps_ajax a').click(function() {
        id = this.id.replace(/.*hps_ajax/,'');
        if(confirm('Anda yakin mau menghapus record ini?'))
            $.getJSON('../admin/media_admin/ajaxHapus/'+id, remove_row);
        return false;   
    }); 
})

function remove_row(data) {
    if(data.sukses == '1') {
        $('td.hps_ajax a#hps_ajax'+data.id).closest('tr').fadeOut('slow',function() {
            $(this).remove();
        });
    } else {
        alert('Gagal menghapus File.');
    }
}

getJSON链接是CodeIgniter App Link。任何人都知道为什么这不再起作用了?

2 个答案:

答案 0 :(得分:8)

最可能的原因是,如果您的JSON不完全有效,现在在jQuery 1.4 +

中检查

From the docs

  

jQuery 1.3及更早版本使用JavaScript的eval来评估传入的JSON。 jQuery 1.4使用本机JSON解析器(如果可用)。它还验证传入的JSON的有效性,因此jQuery在jQuery.getJSON中以及将“json”指定为Ajax请求的dataType时,将拒绝格式错误的JSON(例如{foo:“bar”})。

使用类似JSONLint的内容来验证/修复您的JSON,它应该在有效时开始工作。从'../admin/media_admin/ajaxHapus/'+id获取响应并在JSONLint上进行检查,您也可以使用FireBug查看它,这很方便。

答案 1 :(得分:-1)

在jquery 1.4中的getJson没有开火。 以下是解决此问题的示例:

//begin ( in jquery 1.3.2)
$.getJSON("/url",{id: 'xyz'}, function(json){
     //alert('');
}




// change to ( in jquery 1.4.1)

$.ajax({url: "/url",
  dataType: "text",    // notice: not type : JSON
  success: function(text) {
    json = eval("(" + text + ")"); 

    // do something with JSON
  }
});