7

有谁知道从http://jquery-ui.googlecode.com/svn/tags/1.8.23/themes/获取 jQuery 主题列表的方法?

我正在创建带有主题滚轮的简单网页,用户可以在其中动态切换主题。

工作小提琴- 单击右上角的主题并选择一个新主题。

现在该列表被硬编码如下,

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

有没有办法从 URL http://jquery-ui.googlecode.com/svn/tags/1.8.23/themes/获取这个主题列表?(跨域:http ://www.w3.org/TR/cors/#access-control-allow-origin-response-hea )

试过了,但是下面的代码失败了..

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

感觉我在这里遗漏了很多东西。任何见解都会有帮助。

4

4 回答 4

7

似乎服务器不允许跨域请求。你无能为力。

您可以设置一个可以卷曲该页面的 PHP 脚本,然后您可以只对 PHP 脚本进行 ajax。就像昆卡斯所说的那样

你可以在你的服务器上使用这个简短的 PHP curl 脚本:

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

?>

那么它只是一个简单的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);
    }
});
于 2012-10-02T01:26:29.100 回答
2

我从yahoo(YQL)这个 Cross-domain requests with jQuery 插件中找到了这项服务,该插件使用 YQL 来获取跨域内容。

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

演示:http: //jsfiddle.net/SXHrB/4/

下面的代码只是简单地获取了我解析的整个页面以获得所需的内容。

$.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));
    }
});
于 2012-10-17T19:15:15.607 回答
0

您是否尝试过使用JQuery 使用的主题切换器插件:
它将提供 JQuery 用于演示目的的所有现成主题。

<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>
于 2012-10-03T06:25:39.940 回答
0

您可以让您的网站添加一个指向样式的链接,如下所示:

当您单击新主题时,javascript 会在头部添加一个链接标记,您可以将链接的 ui-lightness 部分替换为此处的任何名称:http: //jquery-ui.googlecode.com/svn/tags/1.8 .23/themes/ 希望这会有所帮助

于 2014-08-17T14:29:42.327 回答