Verwenden JSONP laden einer html-Seite
Ich versuche zum laden einer externen Seite mit JSONP
, aber die Seite ist ein HTML
Seite, ich möchte nur schnappen Sie sich den Inhalt per ajax.
EDIT: Der Grund warum ich das hier mache ist, weil ich möchte alle übergeben Sie die Benutzer-Informationen ab: - Header, ip, agent, beim laden der Seite, anstatt meine Server.
Ist das machbar? Gerade jetzt, kann ich die Seite bekommen, aber jsonp versuche zum Parsen der json-Rückgabe einen Fehler: Uncaught SyntaxError: Unexpected token <
Beispielcode:
$.post('http://example.com',function(data){
$('.results').html(data);
},'jsonp');
Ich habe ein jsfiddle für Menschen zu testen, mit:
http://jsfiddle.net/8A63A/1/
InformationsquelleAutor Korvin Szanto | 2011-09-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://en.wikipedia.org/wiki/JSONP#Script_element_injection
Nun schauen Sie auf Ihre Fehler:
<
ist das erste Zeichen in einem html-tag, wahrscheinlich ist dies der Beginn<DOCTYPE
, in diesem Fall, die natürlich, ungültiges JavaScript.Und KEINE, die Sie nicht verwenden können, JSONP zum abholen von html-Daten.
Weil du es geladen hat als Inhalt
<script>
tag.InformationsquelleAutor c69
Ich habe getan, was Sie wollen, aber in meinem Fall habe ich die Kontrolle der server-side-code, gibt den HTML-Code.
Also, was ich Tat, war, wickelte den HTML-code in einer der Json-Eigenschaften des zurückgegebenen Objekts und verwendet es auf client-Seite, so etwas wie:
Den Syntax-Fehler, den Sie konfrontiert sind, ist es, weil die Bibliothek Sie verwenden erwartet json, aber die Antwort ist HTML, nur, dass.
InformationsquelleAutor martosoler
Ich habe drei Worte für dich: Same-Origin-Policy
Es sei denn, die remote-URL tatsächlich unterstützt eine korrekte JSONP-Anforderungen, werden Sie nicht in der Lage, das zu tun, was Sie versuchen zu. Und das ist eine gute Sache.
Edit: Man könnte natürlich versuchen, die proxy-Anfrage über Ihren server ...
Die Tatsache, dass die Seite gezogen wird, sagt, dass es gezogen werden kann, ohne Analyse, wie json.
Es gibt sicher bessere alternativen. Vorerst aber, SOP verhindert, dass jedes Skript-kiddie-SQL-injection-pwned website, die Sie laufen über von der Buchung "ich kaufte gerade ein penis-Pumpe, lololol" auf deiner FB timeline.
Korvin, was meinst du, wird die Seite gezogen wird?
Es ist sehr interessant, mit einer Art von JSONP die Seite geholt, das problem ist, dass die Antwort ist keine gültige JSON-also die syntax-Fehler.
InformationsquelleAutor vzwick
Wenn du wirklich nur einsetzen wollen, den client zu Haken eine HTML-Datei, schlage ich vor, flyJSONP - was nutzt YQL.. oder verwenden jankyPOST die mit süßen Techniken:
jankyPOST erstellt einen versteckten iframe und stopft es mit einem Formular (iframe[0].contentWindow.Dokument.Körper.form.name).
Dann nutzt es HTML5 (watch ältere Browser!) webMessaging-API zu posten, um die anderen iframe und iframe setzt die form-Elemente' vals auf das, was u angegeben.
Übergibt das Formular an die remote-server...fertig.
Oder Sie könnten einfach verwenden, PHP-curl, analysieren, echo, usw.
IDK wenn was genau ur Verwendung für, aber ich hoffe, das hilft.
AUCH...
Ich bin mir ziemlich sicher, dass Sie JSONP alles, was eine Ausgabe von server-code. Ich Tat dies mit ClientLogin nur durch JSONPing Ihre keyGen Seite und erfolgreich consoleLogged den text, obwohl es war b/w-tags. Ich hatte einige andere Fehler auf, die aber zeigen, ist, dass ich abgekratzt, die Ausgabe.
Derzeit bin ich versucht zu tun, was Sie sind, so ich ' ll post zurück, wenn erfolgreich.
InformationsquelleAutor Cody
Ich glaube nicht, dass dies möglich ist. JSONP erfordert, dass die Antwort richtig.
Wenn Sie möchten, eine andere Lösung, was über das laden der url in einem iframe und versucht zu sprechen durch den iframe. Ich bin nicht 100% positiv, es wird funktionieren, aber es ist einen Versuch Wert.
iframe wird nicht funktionieren ... Sie wird das Gesicht der cross-domain-Problem
InformationsquelleAutor jesse reiss
Ersten Aufruf der AJAX-URL manuell ein und finden Sie die resultierende HTML Sinn macht.
Zweitens müssen Sie zum schließen des DIV in Ihrem fiddle-Beispiel.
Origin is not allowed by Access-Control-Allow-Origin
.InformationsquelleAutor Diodeus - James MacFarlane