2015-01-30 2 views
4

Я пытаюсь добавить на свой сайт ссылку для загрузки последней версии проекта github. Например, ссылка https://github.com/mongodb/mongo/archive/r3.0.0-rc7.zip ссылается на последнюю версию (на сегодняшний день), но я не хочу жестко кодировать номер версии на веб-сайте.Загрузить ссылку для последней версии проекта GitHub

Я нашел несколько вопросов по этой проблеме, answers используя curl, ajax или php.

Я попробовал решение с помощью Ajax, которая использует релиз GitHub API:

<!DOCTYPE html> 

<HTML> <BODY> 

<script language="javascript" type="text/javascript"> 
    $(document).ready(function() { 
     GetLatestReleaseInfo(); 
    }); 

    function GetLatestReleaseInfo() { 
     $.getJSON("https://github.com/mongodb/mongo/releases").done(function (json) { 
     var release = json[0]; 
     var asset = release.assets[0]; 
     var downloadURL = "https://github.com/mongodb/mongo/releases" + release.tag_name + "/" + asset.name; 
     $(".mongodb-download").attr("href", downloadURL); 
     });  
    } 
</script> 

<a href="GetLatestReleaseInfo();">Link</a> 
<a href="" onclick="location.href=this.href+downloadURL;return false;">Link2</a> 
<a href="" onclick="location.href=this.href+mongodb-download;return false;">Link3</a> 

</BODY> 
</HTML> 

, но мне не удается вызвать яваскрипт правильно функционировать, как это кажется в моих попытках выше (Link, Link2 и LINK3) , Я не очень хорошо знаком с javascript или ajax, поэтому буду благодарен за любую помощь; возможно, есть простой способ без Ajax?

+0

выглядит как ['xss'] (https://en.wikipedia.org/wiki/Cross-site_scripting) – Nano

ответ

8

Вы нагружать страницы HTML вместо их REST API.The правильного URL, чтобы получить тег является https://api.github.com/repos/mongodb/mongo/tags

You may want to read more about github api over here - https://developer.github.com/v3/repos/

Вашего HTML может выглядеть следующим образом:

<!DOCTYPE html> 

<HTML> <BODY> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
<script language="javascript" type="text/javascript"> 

$(document).ready(function() { 
    GetLatestReleaseInfo(); 
}); 


function GetLatestReleaseInfo() { 
    $.getJSON("https://api.github.com/repos/mongodb/mongo/tags").done(function (json) { 
     var release = json[0]; 
     var downloadURL = release.zipball_url; 
     $("#mongodb-download").attr("href", downloadURL); 
    });  
} 
</script> 

<a id='mongodb-download' href="">Download latest mongo</a> 

</BODY> 
</HTML> 
+0

Я не могу заставить это работать; Я использую вашу функцию и ссылку, затем нажимаю на ссылку и перенаправляюсь на тот же сайт. Когда я нажимаю правой кнопкой мыши, а затем «сохраняю адрес ссылки», он сохраняет мне адрес моего веб-сайта. – user1981275

+0

используйте 'console.log()' в функции для обнаружения downloadURL, также проверьте консоль и убедитесь, что там нет никаких ошибок. – Gal

+0

не совсем уверен, как ... Если я наберу 'mongodb-download' в консоль, он вернет тег с этим ID. Если я набираю 'GetLatestReleaseInfo()', я получаю 'ReferenceError: $ не определен'. В какой части моего html-файла мне нужно вызвать 'GetLatestReleaseInfo()'? – user1981275

2

Для меня, это хорошо работает:

<!DOCTYPE html> 
<html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
     <script> 
      $(document).ready (function() { 
       $.getJSON("https://api.github.com/repos/mongodb/mongo/tags").done(function (data) { 
        $ ('#mongodb-download').attr ('href', data[0].zipball_url); 
       }) 
      }); 
     </script> 
    </head> 
    <body> 
     <a id="mongodb-download">Download the latest version of MongoDB</a> 
    </body> 
</html> 

Если у вас возникают проблемы с неопределенным, просто измените t он $ в jQuery, и все должно работать!

1
<!DOCTYPE html> 
<html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
     <script> 
      jQuery(document).ready (function() { 
       jQuery.getJSON("https://api.github.com/repos/mongodb/mongo/tags").done(function (data) { 
        jQuery('#mongodb-download').attr ('href', data[0].zipball_url); 
       }) 
      }); 
     </script> 
    </head> 
    <body> 
     <a id="mongodb-download">Download the latest version of MongoDB</a> 
    </body> 
</html> 

Это работает для меня, надеюсь, что это поможет!

Смежные вопросы