3 Stimmen

Wie man das Ajax-Ausgabeskript ausführt

Ich erhalte einen AJAX-Ausgabeerfolg.

Wo die Daten etwas HTML-Text und ein Skript enthalten.

Aber das Skript wird nicht ausgeführt, wie kann ich das Skript ausführen.

Sagen wir, die Ajax-Antwortobj ist

etwas....alert("test");

Der obige Code ist meine Ajax-Antwort. Das div wird gerendert, aber das Alert funktioniert nicht.

0 Stimmen

Du wirst keine Antwort erhalten, bis du etwas Code postest, damit wir genau wissen, worum es geht.

0 Stimmen

Sie müssen mehr Informationen hinzufügen. Können Sie uns ein Beispiel für den zurückgegebenen Text/Script geben? Wie versuchen Sie derzeit das "Script auszuführen"?

0 Stimmen

Entschuldigung, du musst viel mehr Informationen als das inkludieren.

2voto

Russ Punkte 3590

Unter der Annahme, dass Sie kein JSON oder jQuery verwenden, oder eine andere Bibliothek, und Ihr AJAX-Aufruf einige HTML und/oder JavaScript zurückgibt, welche zu Ihrem bestehenden Dokument hinzugefügt wird (z.B. mit innerHTML), wird jegliches über AJAX zurückgegebenes JavaScript im Browser nicht ausgeführt - außer für Ereignisse an Elementen im HTML.

Also, wenn Ihr AJAX-Aufruf zurückgibt, wird das js alert funktionieren, aber wenn Ihr AJAX-Aufruf alert('hallo'); zurückgibt, wird es nicht ausgeführt. In diesem Fall müssten Sie das Ergebnis parsen, um das JavaScript zu extrahieren und auszuführen, unter Verwendung einer Funktion wie dieser:

function extract_and_execute_js(output_to_parse)
{    
    if(output_to_parse != '')    
    {    
        var script = "";
        output_to_parse = output_to_parse.replace(/]*>([\s\S]*?)<\/script>/gi, function(){if (output_to_parse !== null) script += arguments[1] + '\n';return '';});
        if(script) 
        {
            if (window.execScript)
            {
                window.execScript(script);
            }
            else
            {
                window.setTimeout(script, 0);
            }
        }
    }
}

1voto

RameshVel Punkte 62428

Wenn Sie das JSON formatierte Ergebnis aus dem AJAX-Aufruf abrufen, können Sie einfach eval verwenden, um das JavaScript auszuführen.

Annehmen, dass das Ergebnis-json so gebildet ist

   var res =  '{"Daten": "",
              "skript": "alert(etwas)"}';

   var out = eval("(" + res + ")");
   var data = out.data;
   eval(out.script);

0 Stimmen

Dies ist wahrscheinlich keine gute Idee. Ich könnte problemlos mein eigenes JSON senden, das bösartiges Javascript enthalten könnte und ohne Probleme ausgeführt würde...

0 Stimmen

@SpaDusA Ich würde es einem Anfängerprogrammierer nicht empfehlen, aber so wird JSON behandelt. Die Verwendung von HTTPS verbessert die Sicherheit, aber wenn alle Ihre Zugriffe auf Ihren Server erfolgen, haben Sie die Kontrolle über die Skripte, die an Ihre Clients gesendet werden.

1voto

Alexis Wilke Punkte 16966

Interessanterweise verwende ich jQuery und die Verwendung der html() Funktion war ausreichend, um den JavaScript-Code auszuführen. Also musste ich im Grunde nichts Besonderes tun.

Es gibt eine vereinfachte Version:

var myform = $('form#form-id');
$.post(myform.attr('action'), myform.serialize(), function(response) {
  $('#some-id').html(response.message);
}

In meinem Fall wurde der Code automatisch ausgeführt, daher benötigte ich keine der hier vorgeschlagenen Lösungen.

0voto

D'Arcy Rittich Punkte 159655

Nicht sicher, ob Sie eine Bibliothek verwenden, aber mit Prototype musste ich das setzen

evalScripts: true

bevor JavaScript evaluiert würde. Siehe hier für weitere Informationen:

http://www.sergiopereira.com/articles/prototype.js.html#UsingAjaxRequest

0voto

James Black Punkte 41034

Verwenden von jQuery hier ist ein einfaches Stück Code:

$.ajax({
    type: "POST",
    url: "getData.asmx/HelloWorld",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(result) {
        alert(result);
    }
});

Aber um die Ergebnisse der Variable result tatsächlich zu verwenden, habe ich eine JavaScript-Bibliothek verwendet, von http://www.json.org/js.html, habe ich gemacht:

success: function(result) {
    var myData = JSON.parse(result.d);

Es gibt wahrscheinlich bessere Ansätze, aber das war einfach und hat für mich funktioniert, also benutze ich das einfach. Später, wenn das Projekt in Produktion ist, werde ich wahrscheinlich zurückgehen und das aufräumen, aber das passiert erst, nachdem ich alles zum Laufen gebracht habe.

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