3 Stimmen

wie man mit jquery auf ein zurückgegebenes json-Objekt wartet

Ich habe eine Seite mit einem Formular, das ein Dateiupload-Eingabeelement hat, das auf einen versteckten Iframe ausgerichtet ist. Wenn das Formular an den iframe gesendet wird, verarbeitet der Server die Datei und gibt ein json-Objekt zurück. Ich bin nicht sicher, wie man Jquery oder einfaches altes Javascript für diese Angelegenheit verwenden, um für das zurückgegebene Objekt zu hören. Ich habe einige Code für meine Iframe eingerichtet, wie...

$("#upload_target").load(function () {
   //what to do here - how do I get the json object?
});

Weiß jemand, wie man jquery verdrahten, um für das JSON-Objekt zu hören, die zurück an den Iframe gesendet wird? Danke.

5voto

geoff swartz Punkte 4673

Ich habe endlich herausgefunden, wie man es macht....

$("#upload_target").load(function (data) {
    if (data != null){
        var obj = jQuery.parseJSON(data);
        //...work with obj here.
    }
});

Ob es nun der richtige Weg ist oder nicht, er funktioniert.

edit - ich bin ein bisschen zu weit gegangen. hier ist der richtige Code....

$("#upload_target").load(function (){
        var retval = $(frames['upload_target'].document).text();
        if (retval != null)
        {
            try{
                var obj = jQuery.parseJSON(retval);
                //...work with obj here.
            }catch(err){}
        }
});

Eine Sache, die ich auch ändern musste, war die Sicherstellung, dass meine MVC-Controller-Aktion die JSONResult.ContentType = "text/plain" festgelegt wurde. Andernfalls war ich immer ein Speichern als Download-Dialog.

4voto

jwueller Punkte 29834

Sie sollten nicht verwenden .load() für diese Art von Anfrage. Sie fügt die Antwort in die ausgewählten Elemente ein. Das ist sicherlich nicht das, was Sie wollen, wenn Sie über Objekte sprechen. Versuchen Sie $.getJSON() (oder $.post() con json como dataType ) :

// $.getJSON uses HTTP GET
$.getJSON('http://example.com/ajax', function (data) {
   // data is an object
});

// the same with $.post for POST requests
$.post('http://example.com/ajax', function (data) {
   // data is an object
}, 'json');

0voto

Vincent Mimoun-Prat Punkte 27570

Sie sollten Folgendes verwenden laden auf diese Weise:

$("#upload_target").load(
   "http://example.com/myjson.php", 
   function(response, status, xhr) {

   });

Aber für Ajax und JSON sollten Sie post verwenden, $.getJSON ou $.get ou $.post o $.ajax (diese Funktionen nehmen als Parameter auch eine Callback-Funktion mit Argumenten an, die das Ergebnis enthalten).

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