2012-09-26 11 views
7

¿Alguien sabe una forma de obtener una lista de temas jQuery desde http://jquery-ui.googlecode.com/svn/tags/1.8.23/themes/?Obtener lista de temas de la interfaz de usuario de jQuery - desde una URL (misma política de origen)

Estoy creando una página web simple con temas de rodillos donde el usuario puede cambiar los temas de forma dinámica.

Working fiddle - Haga clic en Temas en la esquina superior derecha y seleccione un nuevo tema.

En este momento la lista está codificado como abajo,

<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> 

¿Hay una manera de obtener esta lista de temas de URL http://jquery-ui.googlecode.com/svn/tags/1.8.23/themes/? (Crossdomain: http://www.w3.org/TR/cors/#access-control-allow-origin-response-hea)

intentó, pero falló con código de abajo ..

$.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); 
    } 
}); 

Se siente como que me falta mucho aquí .. alguna idea sería de gran ayuda.

+0

Solo he podido encontrar una forma de navegador cruzado para hacer a través de dominios ajax IE8 + y otros navegadores, nada para IE6-7:/http : //stackoverflow.com/questions/3362474/jquery-ajax-fails-in-ie-on-cross-domain-calls#answer-11267937 pero fue para JSON hmm –

+0

@mcpDESIGNS Lo intentaré ... Nunca he hecho nada con recursos de dominio cruzado y siempre en la intranet de zona segura ...ahora que estaba pensando en mi propia página web y me gustó la idea de usar temas jQuery ... Anways ... leí MDN e intenté algunas cosas, pero no funcionó para mí ... Creo que me falta mucho aquí ... así que pensé en publicarlo aquí para que alguien pudiera señalarme en la dirección correcta. –

+0

La solución más común es crear su propia página que la descarga y luego JavaScript puede trabajar con ella. Puede crear una página que no haga más que llamadas mediante solicitud HTTP en jquery-ui.googlecode.com/svn/tags/1.8.23/themes (por ejemplo, para php, consulte http://php.net/manual/en/function .curl-exec.php) y luego puede procesarlo o simplemente verlo. Sé que no es exactamente lo que estás buscando, pero siempre funciona :-) – kuncajs

Respuesta

2

me encontré con este servicio desde yahoo(YQL) y this Cross-domain requests with jQuery plugin que utiliza YQL a buscar contenido de dominios.

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

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

El código de abajo simplemente me fue a buscar toda la página que he analiza para obtener el contenido requerido.

$.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

Parece que el servidor no permite una solicitud de dominio cruzado. Nada que puedas hacer.

Puede configurar un script PHP que pueda curvar esa página y luego puede ajax el script PHP. Al igual que lo kuncajs dicho

Puede utilizar este script cortos rizos PHP en su servidor:

<?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); 

?> 

entonces es sólo un simple script de ajax:

$.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

Esto es exactamente lo que pensé. Su servidor que representa la página puede ser algo así como un navegador web: al utilizar curl, realiza una solicitud HTTP y obtiene que String represente el contenido de la página. Me refiero al código HTML completo de la página de tema de SVN. Piense en ello como un PROXY - el servidor lo descarga y lo almacena y luego puede solicitar AJAX en su propio servidor "proxy" que está en su propio dominio, por lo que no hay problema de política de dominio cruzado -> Problema resuelto;) – kuncajs

+0

I no sé 'php' así que me tomará algún tiempo comprender este código. –

+0

@Vega Incluso tengo que buscar referencias cuando empiezo a trabajar con CURL nuevamente. Si quieres encontrar un código comentado, simplemente busca "php simple curl". – MLM

0

¿Ha intentado utilizar theme switcher plug-in utilizado por JQuery:
Proporcionará todos los temas ya preparados utilizados por JQuery para fines de demostración.

<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

que podría tener su sitio agregar un enlace al estilo de la siguiente manera:

al hacer clic en el nuevo tema, javascript añade una etiqueta de enlace a la cabeza puede reemplazar la parte ui-ligereza del enlace con cualquiera de los nombres aquí: http://jquery-ui.googlecode.com/svn/tags/1.8.23/themes/ Espero que esto ayude

Cuestiones relacionadas