2010-02-23 2 views
6

Kann mir jemand aufklären, warum der folgende Code in IE7 nicht funktionieren, aber es funktioniert in Chrome/Firefox ganz gut?jQuery AJAX Problem in IE7 (möglicherweise auch andere Versionen)

$(document).ready(function(){ 
    $.ajax({ 
    type: "POST", 
    dataType: "text", 
    cache: false, 
    url: "/ajax/ajax.asp", 
    data: "cmd=check_forfeits", 
    success: function(msg) { 
     return false; 
    } 
    }); 
}); 

Die Javascript-Fehler IE wirft ‚Zugriff verweigert‘

Wenn ich dieses Stück Code aus der Datei für die betreffende Seite JS entfernen Sie die Seite funktioniert gut, keine Fehler, so dass der Fehler liegt in dem Code, den ich glaube.

::: UPDATE :::

Etwas anderes, das ist ein wenig seltsam ist, dass wenn ich die Seite (in IE7) aktualisiere ich keine JavaScript-Fehler bekommen und dieser Code scheint korrekt zu funktionieren. Es ist also so, als würde die Seite diese Code-Snippet-Fehler das erste Mal laden, aber danach läuft es gut.

::: UPDATE :::

Hier sind die Fiedler Beiträge für diese Seite von IE7:

# Result Protocol Host     URL 
1 200  HTTP  192.168.47.13:8000 /
2 304  HTTP  192.168.47.13:8000 /js/jquery-1.4.1.js 
3 200  HTTP  192.168.47.13:8000 /js/index.js 
4 304  HTTP  192.168.47.13:8000 /js/jquery-1.4.1.js 
5 200  HTTP  192.168.47.13:8000 /js/index.js 
6 304  HTTP  192.168.47.13:8000 /css/main.css 
7 304  HTTP  192.168.47.13:8000 /css/grid.css 
8 304  HTTP  192.168.47.13:8000 /images/banner.jpg 

Hier sind die Fiedler Beiträge für diese Seite von Firefox:

# Result Protocol Host     URL 
1 200  HTTP  192.168.47.13:8000 /
2 304  HTTP  192.168.47.13:8000 /js/jquery-1.4.1.js 
3 304  HTTP  192.168.47.13:8000 /js/index.js 
4 304  HTTP  192.168.47.13:8000 /css/grid.css 
5 304  HTTP  192.168.47.13:8000 /css/main.css 
6 304  HTTP  192.168.47.13:8000 /images/banner.jpg 
7 200  HTTP  192.168.47.13:8000 /ajax/ajax.asp 
+1

FWIW, ist die Cache-Option ‚Cache‘ nicht ‚zwischengespeichert‘, obwohl ich bezweifle, dass würde den Anruf unterbrechen. – BBonifield

+0

+1 schöner Fang. Das wurde behoben, aber wie du gesagt hast ... es war nicht der Deal Breaker. – Ryan

+0

Können Sie eine normale XMLHttpRequest auf Ihrem Computer instanziieren? Versuchen Sie 'xhr = XMLHttpRequest? new XMLHttpRequest(): new ActiveXObject ("MSXML2.XMLHTTP"); 'und sehen, ob Sie den gleichen Fehler bekommen. –

Antwort

2

Ich lief in das gleiche Problem.

Ich habe um ein Werk, das Problem zu lösen. Ich schrieb den Code, um den Ajax-Aufruf zu machen, ohne jQuery zu verwenden (XMLHttpObject, onreadystatechange usw.). Dann habe ich jQuery benutzt, um das XML zu parsen.

Aus irgendeinem Grund Ajax die jQuery nicht gut mit IE7 funktioniert.

Sie haben nicht wirklich einen Fehler in IE7, aber wenn Sie es debuggen dann werden Sie sehen, dass der Server nie und getroffen wird oder Code erreicht nie den Erfolg Block.

0

neueste Bearbeitung

Ich habe darüber einige Gespräche hier gefunden: http://zacster.blogspot.com/2008/10/jquery-ie7-load-url-problem.html und andere Orte. Es scheint, dass das Problem mit dem IE7-Cache zu tun hat. Wenn Sie die URL einzigartig machen, die das Problem (zB fügen Sie ein TimeNow = 09.472.345 bis zum Ende des Request-String.) Könnte beheben

erste Antwort

Sind Sie sicher, dass der Name .asp ist? Ich würde erwarten, aspx oder eine andere Erweiterung von .net behandelt zu sehen, ob dies ist, was Sie brauchen, dann haben Sie wahrscheinlich in IIs ermöglichen .asp haben

dann las ich die Frage wieder

Ich sehe, dass es funktioniert in anderen Browsern, so dass es nicht mein ursprünglicher Kommentar sein kann ... download fiddler und sehen, wie sich die Anfrage von IE und anderen Browsern unterscheidet.

http://www.fiddler2.com/fiddler2/

+0

Nach dem Vergleich der Beiträge in IE7 und Firefox der einzige Unterschied ist, dass Firefox hat einen zusätzlichen Beitrag ... der Beitrag zu /ajax/ajax.asp ... dieser Beitrag wird nie in IE7 gemacht .. wahrscheinlich aufgrund der ' Zugriff verweigert "Fehler. – Ryan

+0

Was sind die vorherigen Beiträge? Haben Sie auch eine DC - es könnte sein, dass IE Windows-Authentifizierung verwendet und die andere nicht - Sie haben Rechte als Nicht-Windows-Benutzer, aber Ihr Domain-Name hat keine Rechte. – Hogan

+0

Ich habe meinen ursprünglichen Post oben bearbeitet, um die Fiddler-Logs für die beiden Browser einzubinden. – Ryan

0

ich auch ein Problem mit dem AJAX-Aufruf in jQuery in IE7 hatte. Ich habe herausgefunden, was mein Problem war und nicht sicher, ob es mit deinem verwandt ist oder nicht.

Ich war nicht das Protokoll in der URL setzen und hatte zusätzliche Schrägstriche in IE 7, so folgt aus:

//www.mywebsite.com/products//json.php

was funktioniert überall sonst außer shEt

Sobald ich das Protokoll hinzugefügt und zusätzliche Schrägstriche nahm alles gut funktioniert.

8

Wenn Leute zufällig diese Seite finden, weil sie denselben Fehler haben - ich habe gerade eine andere Ursache/Lösung für IE7 gefunden, die mit diesem "PERMISSION DENIED" Fehler fehlschlägt und bei einer Aktualisierung erfolgreich ist.

Stellen Sie sicher, dass, wenn Sie mit diesem in Ihrem <head> tag:

<meta http-equiv="content-type" content="text/html;charset=utf-8" /> 

Beachten Sie, dass es funktioniert nicht keine Großbuchstaben oder einen Raum nach dem haben „;“. Unsere Website hatte diese Version:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

und das verursachte das gleiche Verhalten beim Erstellen von AJAX-Aufrufe.

Hoffentlich hilft das jemand anderem, weil wir gerade 6 Stunden damit verbracht haben, dies herauszufinden.

0

Etwas Unpassendes könnte in Ihrer Seite sein, der Grund, warum ich auf dieses Problem stieß, ist, dass ich die document.write("<style></style") verwenden, wenn ich die JqueryTool API auf der gleichen Seite verwenden.

0

gibt es eine Zeile in jquery 1.9.1, die später verwendet isnt die aber löst eine Ausnahme: Linie 2582, Spalte 4 in jquery-1.9.1.js

dies nur für IE7 geschieht und nicht IE8 oder höher und stoppt das Laden des Rests des Jquery-Krams. mit IE7-Kompatibilitätsmodus in IE9 i die Codezeile gefunden, die Ausnahme zu werfen, kommentierte sie dann in jquery1.9.1 wie folgt:

// IE6/7 do not support getting/setting some attributes with get/setAttribute 
if (!getSetAttribute) { 

    // Use this for any attribute in IE6/7 
    // This fixes almost every IE6/7 issue 
    nodeHook = jQuery.valHooks.button = { 
     get: function(elem, name) { 
      var ret = elem.getAttributeNode(name); 
      return ret && (name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified) ? 
       ret.value : 
       undefined; 
     }, 
     set: function(elem, value, name) { 
      // Set the existing or create a new attribute node 
      var ret = elem.getAttributeNode(name); 
      if (!ret) { 
       elem.setAttributeNode(
        (ret = elem.ownerDocument.createAttribute(name)) 
       ); 
      } 

      //LB - 19/04/2013 - removed for IE7 compatibility. 
      //ret.value = value += ""; 

      // Break association with cloned elements by also using setAttribute (#9646) 
      return name === "value" || value === elem.getAttribute(name) ? 
       value : 
       undefined; 
     } 
    };