2010-11-24 8 views
1

Dieser Code funktioniert in FF, Chrome, IE6/8, aber nicht in Safari und Opera. Irgendwelche Ideen warum? HierWarum funktioniert das Jquery Ajax nicht in Opera und Safari?

ist der Code:

var name = $('#esm').val(); 
     var email = $('#nam').val(); 
     var message = $('#med').val(); 
     var ad_id = $('#i_d').val(); 

    var data_string = 'esm='+ name + '&nam=' + email + '&med=' + message + '&i_d=' + ad_id; 

      $.ajax({ 
       type:  "POST", 
       url:  "/my_php_file.php", 
       data:  data_string, 
       success: function(data) { 
        $('#tip_loader').hide(); 
       if(data==1){alert('success'); } 
       else {alert('error'); } 
         }//end success function 
     }) //end ajax call 

ich gefunden haben, um den Fehler zu genau den „Ajax“ nennen, weil, wenn ich eine Alertbox legte kurz vor dem $.ajax die Warnung richtig erscheint. Wenn ich jedoch die Warnmeldung in die Erfolgsfunktion einfüge, wird nichts angezeigt, keine Warnung.

Dies geschieht nur in Opera und Safari ...

EDIT:

FYI: Ich schließe diese Javascript-Datei in eine PHP-Datei, und ich schließe auch die jquery.js in die PHP-Datei-Datei. Das ist alles in einer externen Datei.

EDIT:

/main.php /bin/jquery.js /bin/tip.js /bin/tip.php

I schließen die oben js Dateien in main.php, und die Formularaktion in main.php gesetzt

und der Weg zur ajax-uRL /bin/tip.php ist /bin/tip.php statt my_php_file.php

+0

was sagt firebug? :) –

+0

Ich bin nicht gut mit Firebug, wie soll ich lesen, was es sagt? Außerdem, ist nur Firebug für FF, also wie kann ich sagen, was in Opera falsch ist? –

+0

Registerkarte "Net", dort finden Sie Ihre Anfragen mit Antworten. –

Antwort

0

Opera ein Debugging-Tool gebaut in namens Dragonfly. Gehen Sie zum Menü Extras -> Erweitert -> Opera Dragonfly
Wenn Sie nicht über die Datei-Menüleiste auf Menü -> Page -> Developer Tools -> Öffnen Opera Dragonfly

Sobald Sie haben es offen (open Klicken Sie auf der Seite, an der Sie gerade arbeiten, auf die Registerkarte "Skripts" (wahrscheinlich werden Sie dazu aufgefordert, die Seite zu aktualisieren) und auf Ihre externe js-Datei zugreifen. Sobald Sie Ihren Code gefunden haben, können Sie einen Breakpoint auf der $.ajax() Zeile setzen, indem Sie auf die Zeilennummer auf der linken Seite klicken. Jetzt triggern Sie Ihren Code und Sie werden sehen, dass die JavaScript-Zeile unterbrochen wird. Sie können dann die Inspektions-Registerkarte (unten, Mitte) verwenden, um sicherzustellen, dass alle Ihre Variablen richtig eingestellt sind. Sie können das JavaScript auch schrittweise durchgehen und debuggen.

Das andere, was Sie tun möchten, werden ist eine Fehlerfunktion wie so hinzufügen:

$.ajax({ 
    type: "POST", 
    url: "/my_php_file.php", 
    data: data_string, 
    success: function(data) { 
     $('#tip_loader').hide(); 
     if (data == 1) { alert('success'); } 
     else { alert('error'); } 
    }, //end success function 
    error: function(xhr, textStatus, errorThrown) { 
     alert(errorThrown); 
    } 
}); //end ajax call 

Sehen, ob das Sie mehr Informationen gibt.

Überprüfen Sie auch die Fehlerkonsole als @Mufasa vorgeschlagen. Es kann unter der Registerkarte Error Console in Dragonfly gefunden werden.

+0

Ok, bekomme ich eine errorThrown Nachricht: "ReferenceError: Sicherheitsverletzung" ... Irgendwelche Ideen? –

+0

@Camran - Das hängt normalerweise mit einer domänenübergreifenden Anfrage zusammen. Ist der obige Code genau das, was Sie verwenden? Haben Sie auch die Fehlerkonsole überprüft? –

+0

Der Code oben ist genau das, was ich benutze, auch die Fehlerkonsole meldet einige CSS-Fehler, aber da ich bedingte Kommentare habe, könnte das daran liegen. Aber keine Fehler in Bezug auf andere Dinge als CSS ... Also könnte der Grund dafür die PHP-Datei sein? –

0

Es gibt nicht wirklich eine Möglichkeit zu sagen. Sie haben die PHP-Datei nicht hochgeladen. Ohne die Ausgabe zu kennen, können wir nicht bestimmen, wie der Browser reagieren wird.

Weitere Tipps, # 1 Sie verwenden nicht encodeURIComponent für einen der Werte, die es übergeben.Es ist viel einfacher zu bekommen jQuery es für Sie zu tun,

statt Daten: data_string, sollten Sie

Daten: {esm: Name, nam: E-Mail, med: Meldung "I_D": ad_id }

jQuery wird die Abfragezeichenfolge für Sie und korrekt erstellen.

1

In Opera, standardmäßig Datei zulassen XMLHttpRequest ist falsch. Sie müssen also die Einstellungen ändern. Öffnen Sie den Browser Opera und geben Sie about: config ein. Sie gelangen auf den Preference-Bildschirm. Wechseln Sie in den Ordner "User Prefs". Sie können Einstellungen für "XMLHttpRequest" sehen. Überprüfen Sie das und dann Speichern. Es sollte funktionieren.

Verwandte Themen