Laden...

EmptyResult und FireFox

Erstellt von Noodles vor 13 Jahren Letzter Beitrag vor 13 Jahren 5.592 Views
N
Noodles Themenstarter:in
4.644 Beiträge seit 2004
vor 13 Jahren
EmptyResult und FireFox

Hallo,

gegeben sei folgender Code:

[HttpPost]
public ActionResult Search()
{
    return new EmptyResult();
}
@using( Ajax.BeginForm( "Search", new AjaxOptions() { UpdateTargetId = "result" } ) )
{
    <input type="submit" value="Suchen" />
}
<div id="result">
</div>

Dieser Code wird in Chrome und IE problemlos ausgeführt. FireFox hingegen zeigt im FireBug den folgenden Fehler:> Fehlermeldung:

Node cannot be inserted at the specified point in the hierarchy" code: "3
(function(a,b){function cg(a){return d...a:a+"px")}}),a.jQuery=a.$=d})(window);

kennt jemand dieses Problem oder hat eine Erklärung dafür?

Grüße
Noodles

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

hast Du Dir mal mit Firebug angeschaut was bei der Abfrage genau zurückkommt?
Darüber kannst Du vielleicht herausfinden, warum Firefox glaubt, ein Element erstellen zu müssen, das nicht in die Dokumenthierarchie passt.
Ich vermute, da wird irgenwo ein fehlerhaftes Script generiert.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

N
Noodles Themenstarter:in
4.644 Beiträge seit 2004
vor 13 Jahren

Hallo,

die Antwort ist leer.
Im XML Tab steht:

XML-Verarbeitungsfehler: Kein Element gefunden Adresse: moz-nullprincipal:{e19e4977-8a65-4a0f-9a72-8dac6ffa1711} Zeile Nr. 1, Spalte 1:

Güße,
Noodles

16.825 Beiträge seit 2008
vor 13 Jahren

Hast Du das ganze mal mit "normalem" jQuery.Ajax versucht, ohne Microsoft.Ajax?
Leere Antworten, selbst null Rückgaben stellen für jQuery eigentlich kein Problem dar. Ich halt nicht so viel vom Micosoft-Implementierungsversuch und könnte mir durchaus vorstellen, dass hier der Fehler begraben liegt.

Andere Idee:
Jagst Du das Javascript-File noch durch einen Minifier? Evtl wird hier etwas falsch behandelt.

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo Noodles,

auch ich würde es mit reinem jQuery versuchen, zumal das Microsoft AJAX Toolkit abtritt und, auch offiziell, jQuery Platz macht.
zurückgenommen, siehe meinen Post weiter unten. (Ich war der Meinung, die Verwendung von Ajax.BeginForm() würde das Verwenden von MicrosoftAjax.js implizieren, was der unten genannte Blogpost von Brad Wilson allerdings wiederlegt.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

N
Noodles Themenstarter:in
4.644 Beiträge seit 2004
vor 13 Jahren

Hallo,

ich nutze nicht das AjaxToolkit.
Ich verwende keinen Minifier.
Ich verwende MVC 3 mit unobtrusive JavaScript.

Also im normalen jQuery kommt der Fehler Firebug nicht. Alllerdings steht im XML-Tab dasselbe.

XML-Verarbeitungsfehler: Kein Element gefunden Adresse: moz-nullprincipal:{e19e4977-8a65-4a0f-9a72-8dac6ffa1711} Zeile Nr. 1, Spalte 1:

16.825 Beiträge seit 2008
vor 13 Jahren

Dann scheint das Problem nicht Dein Browser zu sein, sondern das von Microsoft mitgelieferte Ajax-File, das nicht mit der Rückgabe zurecht kommt.

Die Funktion Ajax.BeginForm ist allerdings nicht in jquery.unobtrusive-ajax.js enthalten, sondern in MicrosoftAjax.js
Microsoft hat MicrosoftAjax.js ( das man ohnehin in MVC3 Anwendungen nicht nutzen solle ) und MicrosoftMvcAjax.js als veraltet deklariert und man soll stattdessen jQuery in der Originalfassung verwenden; was durchaus sinn macht.

N
Noodles Themenstarter:in
4.644 Beiträge seit 2004
vor 13 Jahren

Die Funktion :::

MicrosoftAjax.js ist das Erste (alle anderen MicrosoftAjax files ebenfalls) was ich gelöscht habe, nach dem ich das Projekt angelegt habe. Somit sollte die Aussage nicht unbedingt Bestand haben.

http://yobriefcase.posterous.com/unobtrusive-javascript-in-mvc3

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo Abt,

das gleiche wollte ich eben auch schreiben, bis ich auf den Blogpost Unobtrusive Ajax in ASP.NET MVC 3 von Brad Wilson gestoßen bin:

In ASP.NET MVC 1.0, we shipped Ajax helpers implemented as extension methods on the AjaxHelper class (and available via the Ajax property of your views). In the box, we shipped two category of Ajax helpers: Ajax links and Ajax forms. Both fundamentally did the same thing: make an asynchronous request, and do something with the result when you’re finished (including knowing whether you got back a success or failure response from the server).

In ASP.NET MVC 3 Beta, we've updated the runtime to enable a feature we're calling "Unobtrusive Ajax". We have also created a consumer for these unobtrusive Ajax attributes that uses ++jQuery ++to perform the Ajax requests on our behalf.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

16.825 Beiträge seit 2008
vor 13 Jahren

Hi,

man lernt immer dazu. Trotzdem scheints nicht grad optimal zu laufen, mh? 8)
Ich würde trotzdem aber gerade bei solchen Dingen beim "richtigen" jQuery bleiben; bzw. sowieso Abstand von "APIs auf APIs" nehmen. Man sieht ja wie schnell sich Microsoft in dieser Hinsicht um 180° dreht.
jQuery selbst wird nicht einfach so mal kurz die ganze API auf den Kopf stellen.

N
Noodles Themenstarter:in
4.644 Beiträge seit 2004
vor 13 Jahren

Sorry, aber ich wollte keine Belehrung welches API gut oder böse ist.
Hat jemand Ideen die zur Lösung mit Ajax.BeginForm beitragen?

16.825 Beiträge seit 2008
vor 13 Jahren

Wie bereits paar Beiträge vorher: plain jQuery nutzen. Sind 3 Zeilen Code
Ansonsten musst wohl auf nen Fix von MS warten, da es ja offensichtlich ist, dass es am mitgelieferten js-File liegt.... 👍

N
Noodles Themenstarter:in
4.644 Beiträge seit 2004
vor 13 Jahren

Firefox kann anscheinend keine komplett leeren Results handeln, im Gegensatz zu Chrome und IE.

Lösung:
anstatt EmptyResult, return Json( string.Empty ) verwenden.