2 Stimmen

mein getJSON-Code funktioniert nicht in jquery 1.4.2

Dies ist meine erste Frage auf Stackoverflow. Ich frage mich nur, warum mein getJSON-Code nicht mit jQuery 1.4.2 funktioniert, es funktionierte reibungslos mit jQuery 1.3.2 obwohl

Hier ist also mein Code

$(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.');
    }
}

Der getJSON-Link ist ein CodeIgniter App Link. Weiß jemand, warum das nicht mehr funktioniert?

0 Stimmen

Können Sie eine Beispiel-Json-Antwort anhängen, die Ihre Url beim Aufruf erzeugt? Höchstwahrscheinlich ist es einfach ungültiges json

0 Stimmen

Drei Mal "funktioniert nicht"? Ernsthaft?

8voto

Nick Craver Punkte 609016

Die wahrscheinlichste Ursache ist, dass Ihr JSON nicht vollständig gültig ist. Dies wird nun in jQuery 1.4+ überprüft

Aus den Unterlagen :

jQuery 1.3 und frühere Versionen verwendeten JavaScript's eval, um eingehendes JSON auszuwerten. jQuery 1.4 verwendet den nativen JSON-Parser, falls verfügbar. Außerdem wird eingehendes JSON auf seine Gültigkeit hin überprüft. So wird fehlerhaftes JSON (z. B. {foo: "bar"}) von jQuery in jQuery.getJSON und bei der Angabe von "json" als dataType einer Ajax-Anforderung zurückgewiesen.

Verwenden Sie etwas wie JSONLint um Ihr JSON zu validieren/zu korrigieren. Sobald es gültig ist, sollte es funktionieren. Nehmen Sie die Antwort von '../admin/media_admin/ajaxHapus/'+id und überprüfen Sie es mit JSONLint, Sie können es auch mit FireBug was sehr praktisch ist.

0 Stimmen

Vielen Dank Nick für die Antwort. ich bereits versuchen, fügen Sie meinen Code in jsonlint.com für die Validierung. aber es hält mir sagen, dass Parser fehlgeschlagen.

2 Stimmen

@Nikolius - Können Sie das JSON posten?

0 Stimmen

Dies ist meine Rückgabe json {'sukses':'1','id':56}

-1voto

Pham Van Huy Punkte 1

GetJson in jquery 1.4 nicht feuern. Hier ist ein Beispiel, um dieses Problem zu lösen:

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

1 Stimmen

Das ist eine schreckliche Idee. Warum sollten Sie das tun? Warum nicht das in jQuery integrierte Parsing verwenden, das sehr gut ist?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X