2012-09-26 8 views
7

Kennt jemand einen Weg, um Liste der jQuery Themen von http://jquery-ui.googlecode.com/svn/tags/1.8.23/themes/ zu erhalten?Get Liste von jQuery UI Themes - von einer URL (gleiche Herkunft-Richtlinie)

Ich erstelle einfache Webseite mit Themes Roller, wo der Benutzer Themen dynamisch wechseln kann.

Working fiddle - Klicken Sie auf Designs in der rechten oberen Ecke und wählen Sie ein neues Thema.

Momentan wird die Liste hart wie unten codiert,

<div id="theme-list">  
    <ul> 
     <li class="themes-el ui-state-highlight" data-theme="cupertino">cupertino</li> 
     <li class="themes-el" data-theme="hot-sneaks">hot-sneaks</li> 
     <li class="themes-el" data-theme="smoothness">smoothness</li> 
     <li class="themes-el" data-theme="pepper-grinder">pepper-grinder</li> 
     <li class="themes-el" data-theme="ui-lightness">ui-lightness</li> 
     <li class="themes-el" data-theme="ui-darkness">ui-darkness</li> 
     <!-- and more --> 
    </ul>  
</div> 

Gibt es eine Möglichkeit, diese Liste von Themen aus der URL http://jquery-ui.googlecode.com/svn/tags/1.8.23/themes/ zu bekommen? (Domänenübergreif: http://www.w3.org/TR/cors/#access-control-allow-origin-response-hea)

versucht, scheiterte aber mit folgendem Code ..

$.ajax({ 
    url: 'http://jquery-ui.googlecode.com/svn/tags/1.8.23/themes/', 
    dataType: 'text', 
    beforeSend: function (xhr) { 
     xhr.setRequestHeader("Access-Control-Allow-Origin", 'http://jquery-ui.googlecode.com'); 
     xhr.setRequestHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); 
    }, 
    crossDomain: true, 
    success: function (data) { 
     alert(data); 
    }, 
    error: function (jqXHR, textStatus, errorThrown) { 
     alert(errorThrown + ' ' + textStatus + ' ' + jqXHR.responseText); 
    } 
}); 

Es fühlt sich an wie ich hier viel fehle .. jede Einsicht wirklich helfen würde.

+0

Ich konnte nur eine Cross-Browser-Möglichkeit, Cross-Domain-Ajax IE8 + und andere Browser zu tun, nichts für IE6-7:/http : //stackoverflow.com/questions/3362474/jquery-ajax-fails-in-ie-on-cross-domain-calls#answer-11267937 aber es war für JSON hmm –

+0

@mcpDESIGNS Ich werde es versuchen .. Ich habe noch nie etwas mit Cross-Domain-Ressourcen und immer in der sicheren Zone Intranet ..Jetzt dachte ich an meine eigene Webseite und mochte die Idee, jQuery-Themen zu verwenden .. Anways .. Ich las MDN und probierte einige Sachen aus, aber es hat nicht für mich funktioniert .. Ich glaube, ich vermisse hier eine Menge. Ich dachte daran, es hier reinzuschicken, damit mir jemand in die richtige Richtung zeigen kann. –

+0

Die häufigste Problemumgehung besteht darin, eine eigene Seite zu erstellen, die sie herunterlädt und dann mit JavaScript arbeiten kann. Sie können eine Seite erstellen, die nur HTTP-Anfragen auf jquery-ui.googlecode.com/svn/tags/1.8.23/themen aufruft (zum Beispiel für PHP siehe http://php.net/manual/en/function) .curl-exec.php) und dann können Sie es verarbeiten oder einfach nur ansehen. Ich weiß, es ist nicht genau das, was Sie suchen, aber es funktioniert immer :-) – kuncajs

Antwort

2

fand ich diesen Service von yahoo(YQL) und this Cross-domain requests with jQuery plugin die YQL Cross-Domain-Inhalte zu holen verwendet.

http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/

DEMO:http://jsfiddle.net/SXHrB/4/

Der Code unten geholt einfach mir die ganze Seite, die ich den gewünschten Inhalt zu bekommen geparst.

$.ajax({ 
    url: 'http://jquery-ui.googlecode.com/svn/tags/1.8.23/themes/', 
    type: 'GET', 
    success: function(data) { 
     alert(data.responseText.substring(data.responseText.indexOf('<ul>'), data.responseText.lastIndexOf('</ul>') + 4)); 
    } 
}); 
7

Es scheint, dass der Server eine domänenübergreifende Anforderung nicht zulässt. Du kannst nichts machen.

Sie können ein PHP-Skript einrichten, das diese Seite kräuseln kann, und dann können Sie nur das PHP-Skript anjaxen. Wie, was kuncajs

sagte

können Sie diesen kurzen PHP-Curl-Skript auf Ihrem Server verwenden:

<?php 

$ch = curl_init(); 
// URL to grab 
curl_setopt($ch, CURLOPT_URL, 'http://jquery-ui.googlecode.com/svn/tags/1.8.23/themes/'); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$output = curl_exec($ch); 
curl_close($ch); 

print_r($output); 

?> 

Dann ist es nur einen einfacher Ajax-Skript:

$.ajax({ 
    url: "linktoscript.php", 
    dataType: "html", 
    success: function(data) { 
     console.log(data); 
    }, 
    error: function (request, status, error) { 
     console.log(request); 
     console.log(status); 
     console.log(error); 
    } 
}); 
+0

Das ist genau das, was ich dachte. Ihr Server, der die Seite rendert, kann so etwas wie ein Webbrowser sein - mit curl macht er eine HTTP-Anfrage und erhält String, der den Seiteninhalt darstellt. Ich meine ganzen HTML-Code der SVN-Themenseite. Stellen Sie es sich wie einen PROXY vor - der Server lädt es für Sie herunter und speichert es und dann können Sie eine AJAX-Anfrage auf Ihrem eigenen "Proxy" -Server machen, der sich auf Ihrer eigenen Domäne befindet. Kein Cross-Domain-Richtlinienproblem -> Problem gelöst;) – kuncajs

+0

I weiß nicht 'php', also wird es für mich irgendwann dauern, diesen Code zu verstehen. –

+0

@Vega Auch ich muss Referenzen nachschlagen, wenn ich wieder mit CURL arbeite. Wenn Sie einen kommentierten Code finden möchten, suchen Sie einfach nach "php simple curl". – MLM

0

Haben Sie versuchten theme switcher Plugin verwendet von JQuery:
Es wird alle vorgefertigten Themen geben, die von JQuery zu Demonstrationszwecken verwendet werden.

<script src="jquery.js"></script> 
<script type="text/javascript" src="themeSwitcher.js"></script> 
<script type="text/javascript">  
    $(document).ready(function(){ 
     $('#switcher').themeswitcher(); 
    }); 
</script>  

<div id="switcher"></div> 
0

könnten Sie haben Ihre Website einen Link zu dem Stil wie folgt hinzu:

, wenn Sie das neue Thema klicken, javascript einen Link-Tag an den Kopf fügt Sie den ui-Leichtigkeit Teil ersetzen können der Link mit einem der Namen hier: http://jquery-ui.googlecode.com/svn/tags/1.8.23/themes/ hoffe das hilft