情况如此 - 我有一个Raspberry Pi 2(它连接到电视),我正在运行Kodi来播放电影。我想建立自己的电影数据库,所以我可以浏览连接到树莓的extarnal硬盘上的所有电影。我发现我可以通过网络上的另一台计算机向服务器发送请求来播放带有kodi的电影。例如,如果我在我的机器上的Web浏览器中输入以下URL:
http://192.168.0.102:8080/jsonrpc?request={"jsonrpc":"2.0","id":"1","method":"Player.Open","params":{"item":{"file":"/media/serverhdd/cloud/Movies/Ex Machina/Ex Machina.mkv"}}}
电影Ex Machina(kodi必须运行)将开始。我有以下代码:
<a class = "play_movie" href = "http://192.168.0.102:8080/jsonrpc?request={"jsonrpc":"2.0","id":"1","method":"Player.Open","params":{"item":{"file":"/media/serverhdd/cloud/Movies/Ex Machina/Ex Machina.mkv"}}}">Pleay movie</a>
<script type="text/javascript">
$('.play_movie').click(function(){
var movie_url = $(this).attr('href');
$.ajax({
url: movie_url,
success: function(data) {
alert('done');
}
});
});
</script>
当我点击链接时,kodi开始播放电影,但我要转到此网址并收到此消息:
{ “ID”: “1”, “jsonrpc”: “2.0”, “结果”: “OK”}
我想要的是留在当前页面而不是转到上面的URL。我已经在这里和其他地方检查了,似乎我应该能够用AJAX做到这一点,但是使用上面的代码,我将转到URL,而不是留在当前页面。
请告诉我该怎么做?
非常感谢!
此致 伊万
答案 0 :(得分:0)
第一个解决方案建议:您只需要使用事件 preventDefault jQuery函数。这种情况下的默认值是进入链接。
替代解决方案:好的,这不是我提出的第一个解决方案。但请记住,正确的代码无法正常工作,您可以尝试使用此代码修复它(或破解它)。
$('.play_movie').each(function(){
var href = $(this).attr('href');
$(this).attr('hhref', href);
$(this).attr('href', 'javascript:void(0)');
});
$('.play_movie').click(function(event){
event.preventDefault();
var movie_url = $(this).attr('hhref');
$.ajax({
url: movie_url,
success: function(data) {
alert('done');
}
});
});
答案 1 :(得分:0)
我想我已经明白了...我已经改变了设计...我没有使用链接,我认为最好使用按钮并对变量进行硬编码 - IP地址和电影目的地。当然,我也可以轻松地从数据库中获取它们,但这仅用于测试目的:
<button>Play movie</button>
<script>
var KodiAddress = 'http://192.168.0.102:8080';
$( 'button' ).click( function() {
var kodioutput = $(this).attr('href');
var URL = '/media/serverhdd/cloud/Movies/Ex Machina/Ex Machina.mkv'; // Grab Input Value
$.ajax({
type: 'GET',
url: KodiAddress + '/jsonrpc',
dataType: 'jsonp',
jsonpCallback: 'jsonCallback',
type: 'GET',
async: false,
data: 'request=' + encodeURIComponent( '{"jsonrpc":"2.0","method":"Player.Open","params":{"item":{"file":"' + URL + '"}},"id":"1"}' )
})
.fail( function( jqXHR, textStatus ) {
if ( jqXHR.status == 200 ) {
alert('done');
} else {
alert('fail');
}
});
});
</script>
谢谢大家调查我的问题!
此致 伊万