Internet Explorer nicht die Darstellung von html zurück von JQuery ajax post
Ich habe eine Seite mit einem Eingabefeld, dessen onkeyup feuert eine JQuery ajax post, basierend auf, was eingegeben wurde (ein Suchfeld)
Den ajax-Aufruf zurück gebucht html soll, füllen Sie ein weiteres div-Element auf der Seite.
Hier ist die jquery-ajax-post:
var o = $(me.results).empty().addClass("aj3load");
$.ajax({
type: "POST",
dataType: "text",
url: me.url,
data: "cmd="+escape(me.cmd)+"&q="+q+"&"+me.args,
cache: false,
complete: function() {
$(o).removeClass("aj3load");
me.ls = q;
},
success: function(msg){
$(ajax3.results)
.html(msg)
.find("div")
.click(function(){
var crs_id = $(this).find(":hidden").val();
$(ajax3.field).val($(this).text());
$(ajax3.vf).val(crs_id);
$(ajax3.results).empty().slideUp("fast");
ajax3.ls = $(this).text();
getEventInfo();
});
}
});
Hier ist die Antwort des ajax-Aufrufs bei der Suche nach "eve" (pro Fiddler):
HTTP/1.1 200 OK
Cache-Control: private
Date: Thu, 03 Dec 2009 16:16:05 GMT
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Vary: Accept-Encoding
Content-Length: 882
<div><input type="hidden" value="1000806" />111_Demo_Event_090924</div>
<div><input type="hidden" value="1000811" />123 Test Event oct 12 2009</div>
<div><input type="hidden" value="1000805" />AAA_Demo_Event</div>
<div><input type="hidden" value="1000103" />Developing Algebraic Thinking in Grades 3-5 - 30hr</div>
<div><input type="hidden" value="1000086" />Developing Algebraic Thinking in Grades K-2 - 30hr</div>
<div><input type="hidden" value="1000144" />Facilitating Oral Language Development (Grades PreK-3) - 30hr</div>
<div><input type="hidden" value="1000613" />Free PBS TeacherLine Event</div>
<div><input type="hidden" value="1000088" />Math in Everyday Life for Grades 6-8 - 15hr</div>
<div><input type="hidden" value="1000087" />Math in Everyday Life for Grades K-5 - 15hr</div>
<div><input type="hidden" value="1000163" />Using Multimedia to Develop Understanding - 30hr</div>
Nun in firefox und chrome alle diese divs zeigen, schön und gut, aber im IE wird nur das erste div wird angezeigt, in dem div-container auf die Seite.
Irgendeine Idee, was schief läuft mit dem IE hier?
UPDATE:
Wenn ich in einem alert("Hallo Welt"); nachdem ich zuweisen $(ajax3.Ergebnisse).html(msg)... rufen Sie IE machen die ajax-Beiträge Antwort richtig. Dies ist keine Lösung, nur evtl. etwas Hilfe bei der Fehlersuche. Ich will nicht, um eine alert-box Mitte der Verarbeitung. Auch ich habe festgestellt, dass dieses problem nicht beeinträchtigt IE 8, nur frühere Versionen.
Dank
- Es wäre nützlich, wenn Sie zeigte den code in die callback aus deinem Ajax-request.
- Kopiert habe ich deine divs in eine string-variable
msg
, dann lief$("#mydiv").html(msg);
mit kein problem, die führt mich zu glauben, das problem ist mit einigen weiteren Teil der Seite. Sind Sie sicher, dass der AJAX-Aufruf gibt alle diese Ereignisse im IE? Sie könnten auch in Erwägung ziehen, mehr Informationen über die Seite, die in Ihrer Frage (andere Skripte, etc.). - Dank Jeff. Mit Fiddler konnte ich sehen, die ganze post zurück, mit dem Wert aus der ajax-Aufruf (die ich aufgelistet habe in meiner Frage). Ich bin nur wirklich ratlos, warum der IE zeigt nur das erste element zurückgegeben. Da funktioniert es in Firefox und Chrome ich nehme an, dass meine javascript-korrekt ist (weder ie noch firebug zeigt keine js Fehler).
- Verwirrend in der Tat - alles, was ich empfehlen kann, ist zu pare wieder Ihr Skript, um die minimum-möglich und sehen Sie, ob Sie die Ursache einzugrenzen. Ich würde anfangen, durch das auskommentieren der
complete
Rückruf und der Teil des Codes fügt hinzu, dass dieaj3load
Klasse, wenn das blendet die div-und sehen, ob das hilft. Gestrahlt IE - bitte diese zu aktualisieren, wenn Sie es herausfinden! - Um dies zu beheben ich habe gerade die Ausgabe-Optionen in einer select-Liste.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist eine lange gedreht, aber was sind die Stile, die auf ajax3.Ergebnisse? Ist es möglich es hat eine Feste Höhe mit overflow:hidden? Oder Sie könnten auf ein rendering-bug...tun, die anderen Felder werden angezeigt, wenn Sie die Größe des Browsers (auslösen Neuzeichnen) nach dem Aufruf?
Ihre input-tags nicht geschlossen sind. Dies kann dadurch manche Skurrilität im IE.
Ajax-Anfragen-Cache von IE. Mit Ihrem $.ajax deaktivieren der Zwischenspeicherung. Dies kann gerade eventuell ein weiterer Grund für das Problem.
Eine Sache, die ich tun würde, nicht verwenden
div
s. Ein besser geeignetes element wärep
. Einol
wäre noch besser.Geben Sie diese ein Schuss.
index.html:
php.php:
Überprüfen Sie Ihren Datentyp parameter in Ihrer Anfrage. Sie erwarten html, hinten, rechts? Versuchen Sie, dass zu "html".
Sagte Sie:
Fehlt das # - Zeichen vor mydiv? Versuchen Sie auch
</input>
zu sehen ist, verhält es sich anders als<input />
.Ich hatte diesen bug zu verwenden .html() nach ajax-Abfrage. Konnte es nicht auch Arbeit im IE6 noch 7 für die Liebe noch Geld, also bin ich einfach wieder auf .innerHTML. Funktioniert jetzt.
Bin ich auch mit dieser komischen bug. Es wurde behoben, sobald ich habe die doctype auf transitional aus strenge und Hinzugefügt
an den Anfang jeder ajax-response.
Bei anderer Gelegenheit merkte ich, dass der IE einfach nicht zu akzeptieren-tag in der ajax-Antwort. Wann auch immer Sie verwenden, um es zu finden, es auszog, meinen alle tags in der Antwort ließ nur Skelett-text
Tod zu IE.
Ich hatte das Problem mit den fehlenden modals auf meine JS erstellt modals auf meiner Rails-app.
Das einzige, was für mich gearbeitet wurde, entfernen alle fading-Effekt, da der Nachrichtentext der Antwort richtig war. (https://github.com/twbs/bootstrap/issues/3672)
In meiner rails-app (haml+booststrap), Ersetze ich die div-id:
"#modal-Fenster.modal.verstecken.fade"
pro
"#modal-Fenster.modal.ausblenden"
Es nicht nicht brechen, Chrome, Firefox, Safari und arbeitete auf Internet Explorer.