Meu código getjson não funciona no jQuery 1.4.2
Pergunta
Esta é a minha primeira pergunta no StackOverflow. Eu só me pergunto por que meu código getjson não funciona com o jQuery 1.4.2, funcionou sem problemas com o jQuery 1.3.2
Então aqui está o meu código
$(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.');
}
}
O link getjson é um link de aplicativo CodeIgniter. Alguém sabe por que isso não funciona mais?
Solução
A causa mais provável se o seu JSON não for completamente válido, agora é verificado no jQuery 1.4+
O jQuery 1.3 e usou anteriormente a avaliação do JavaScript para avaliar o JSON de entrada. O JQuery 1.4 usa o analisador JSON nativo, se disponível. Ele também valida o JSON recebido por validade, portanto, o JSON malformado (por exemplo {foo: "bar"}) será rejeitado pelo jQuery em jQuery.getjson e ao especificar "JSON" como o tipo de dados de uma solicitação AJAX.
Use algo como JSONLINT Para validar/consertar seu JSON, ele deve começar a funcionar uma vez válido. Pegue a resposta de '../admin/media_admin/ajaxHapus/'+id
e verifique no Jsonlint, você também pode vê -lo com Firebug o que é útil.
Outras dicas
Getjson no jQuery 1.4, não fogo. Aqui está um exemplo para resolver este problema:
//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
}
});