Youtube Suggest-Box - AJAX/JSON Call Cross-Site-Scripting Problem

[funcoder]

Lt. Junior Grade
Registriert
Okt. 2008
Beiträge
404
Hallo Zusammen,

ich habe auf einer Website ein Suchfeld für Youtube und würde gerne die Suggest Funktion mit integrieren.

Den Call den Youtube absetzt hat folgendes Schema:
Code:
http://suggestqueries.google.com/complete/search?hl=de&ds=yt&client=youtube&hjson=t&jsonp=window.yt.www.suggest.handleResponse&q=andro&cp=1

Ich möchte auf Client Seite via Javascript nun ebenfalls diese Calls absetzen damit ich eben auch diese Suggest Funktion habe. Habe es bereits mit diversen JSON/AJAX Code (unter anderem auch mit allem was jQuery hergibt) erfolgslos ausprobiert.
Das Problem ist, da es aus Browserrichtlinien Cross Site Zugriffe nicht erlaubt sind.

Was ich als mögliche Lösung gefunden habe nennt sich "On-Demand-Javascripit" wo ich zur Laufzeit ein Script Tag erstelle was die beliebige Resource lädt und innerhalb des Script Tags befüllt.

Code:
qscript.src ="http://suggestqueries.google.com/complete/search?hl=de&ds=yt&client=youtube&hjson=t&jsonp=window.yt.www.suggest.handleResponse&q=andro&cp=1";
divContainer.appendChild(qscript);

Das Resultat ist auch in Ordnung:
Code:
<script src="http://suggestqueries.google.com/complete/search?hl=de&amp;ds=yt&amp;client=youtube&amp;hjson=t&amp;jsonp=window.yt.www.suggest.handleResponse&amp;q=andro&amp;cp=1">

window.yt.www.suggest.handleResponse(["andro",[["android","","0"],["android 2.2","","1"],["android apps","","2"],["andromeda","","3"],["android games","","4"],["android 3.0","","5"],["android apps german","","6"],["android 2.1","","7"],["andromeda deutsch","","8"],["android tablet","","9"]],"","","","","",{}])

</script>




Nur, wie bekomme ich jetzt den Inhalt aus dem Script Tag in eine Variable?
Alles mögliche ausprobiert... vergebens.

Geht es vielleicht auch viel einfacher?
Bin für jeden Rat/Tipp dankbar!

[funcoder]
 
Danke ice-breaker scheint genau das zu sein was ich brauche :)
Edit:
Ok, Habe das jetzt schön säuberlich mit jQuery gelöst.
Problem ist das dadurch der Response in das Script Tag eingefügt wird. Was zur Folge hat das es einen Javascript Fehler verursacht und die ganze weitere Skriptausführung unterbricht.

Daher, lässt sich der Return Wert auch irgendwie in eine Variable umlenken?
Mein Aufruf sieht jetzt so aus:

Code:
$.ajax({
  dataType: 'jsonp',
  jsonp: 'jsonp_callback',
  url: 'http://suggestqueries.google.com/complete/search?hl=de&ds=yt&client=youtube&hjson=t&jsonp=window.yt.www.suggest.handleResponse&q=andro&cp=1&jsoncallback=?',
  success: function (j) {
    alert(j);
},
});

Das Resultat ist das folgende:
Code:
<script src="http://suggestqueries.google.com/complete/search?hl=de&amp;ds=yt&amp;client=youtube&amp;hjson=t&amp;jsonp=window.yt.www.suggest.handleResponse&amp;q=andro&amp;cp=1">

window.yt.www.suggest.handleResponse(["andro",[["android","","0"],["android 2.2","","1"],["android apps","","2"],["andromeda","","3"],["android games","","4"],["android 3.0","","5"],["android apps german","","6"],["android 2.1","","7"],["andromeda deutsch","","8"],["android tablet","","9"]],"","","","","",{}])

</script>

Bin definitiv nicht in Javascript OOP bewandert, ließe sich daraus vielleicht auch irgend ein Klassen, Methoden, Attribut konstrukt bauen, sodass er das einfach die dazugehörige Klasse aufruft und dem Konstruktor das in den Klammern mitgibt?

Vielen Dank!
 
Zuletzt bearbeitet: (Ergänzung)
Nein nein, ich meinte es anders.

so:
PHP:
<script type="text/javascript">
function handleResponse(json) {
  console.log(json); // requires firebug ;)
}
</script>
<script type="text/javascript" src="http://suggestqueries.google.com/complete/search?hl=de&ds=yt&client=youtube&hjson=t&jsonp=handleResponse&q=andro&cp=1&jsoncallback=?"></script>
 
Vielen Dank ice-breaker!
Jetzt versteh ich wie der response gehandelt wird. Eigentlich simpel :) danke!
 

Ähnliche Themen

Zurück
Oben