мой код getJSON не работает в jquery 1.4.2 - PullRequest
2 голосов
/ 23 марта 2010

Это мой первый вопрос по 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. Кто-нибудь знает, почему это больше не работает?

Ответы [ 2 ]

8 голосов
/ 23 марта 2010

Наиболее вероятная причина, если ваш JSON не полностью корректен, теперь это проверено в jQuery 1.4 +

Из документов :

jQuery 1.3и ранее использовал JavaScript eval для оценки входящего JSON.jQuery 1.4 использует собственный анализатор JSON, если он доступен.Он также проверяет входящий JSON на достоверность, поэтому искаженный JSON (например, {foo: "bar"}) будет отклонен jQuery в jQuery.getJSON и при указании «json» как dataType запроса Ajax.*

Используйте что-то вроде JSONLint для проверки / исправления вашего JSON, он должен начать работать после того, как будет действителен.Возьмите ответ от '../admin/media_admin/ajaxHapus/'+id и проверьте его на JSONLint, вы также можете просмотреть его с помощью FireBug , что удобно.

0 голосов
/ 07 ноября 2011

getJson в jquery 1.4 не запускается. Вот пример решения этой проблемы:

//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
  }
});
...