2009-07-09 7 views
6

Ich habe das folgende Problem, ich denke, es ist wahrscheinlich aufgrund der Tatsache, dass meine Vorgehensweise fehlgeleitet sein kann, aber hoffentlich mit Ihrer Hilfe kann ich das aussortieren!AJAX und NS_ERROR_DOM_BAD_URI Fehler

Grundsätzlich, für meine Website habe ich einen Suchanbieter (wer bezahlt wurde, damit ich keine Nutzungsbedingungen brechen). Wenn das Suchformular submittiert wird, werde ich zu ihrer Domain weitergeleitet, wo die Ergebnisse angezeigt werden.

Während ich das Aussehen der zurückgegebenen Ergebnisse anpassen kann, gibt es nur so weit kann ich das nehmen, und wird es nie vollständig in das Aussehen und Gefühl meiner Website passen.

Also, ich dachte, anstatt das regelmäßige GET über das Formular zu tun, würde ich ein AJAXified GET machen und dann die zurückgegebene Antwort in ein Div auf der Seite injizieren - so dass ich das Look and Feel beibehalten und nie unser verlassen Domain.

Dies funktioniert gut im IE, aber in Firefox bekomme ich "text/html (NS_ERROR_DOM_BAD_URI)" als Fehler. Nachdem ich einige Nachforschungen angestellt habe, habe ich festgestellt, dass dies darauf zurückzuführen ist, dass die AJAX-Anfrage auf eine Website außerhalb unserer Domain trifft.

Gibt es also einen besseren Ansatz, um den gleichen Effekt zu erzielen? oder gibt es eine Möglichkeit, ich kann Firefox und meine AJAX-Anfrage, um nett zu spielen? Was wirklich seltsam ist, ist, dass, wenn ich die Anfrage in der HttpFox beobachte (ein nettes FF-Addon), es den obigen Fehler meldet, aber wenn ich auf den zurückgegebenen Inhalt schaue, ist alles da wie erwartet - also warum kann ich nicht darauf zugreifen! !

Ich möchte wirklich, dass dies funktioniert, da es sehr viel einfacher ist als das Umschreiben aller unserer CSS und Zeug, um ihre Ergebnisseite fast wie unsere Website aussehen zu lassen. Jede Hilfe in diesem Bereich wäre sehr willkommen.

Antwort

1

Sie müssen JSONP verwenden, um Cross-Domain zu tun, soweit ich weiß - es ist eine Sicherheitsausnahme in AJAX. JQuery behandelt es gut, aber Sie müssen die Antwort des Servers geändert haben, um es anzupassen.

Ich habe ein OSS-Projekt für Social Actions gemacht, das dies mit einem PHP-Proxy macht. Sie können es hier sehen: http://os.adamaltemus.com/social-actions/

0

Es ist auch möglich, wenn Sie sich auf einer Webseite http sind und versuchen, einen AJAX-Aufruf zu einer https Webseite auf der gleichen Domain zu senden.