Google音乐播放器是如何保存歌曲的?

在一个音乐列表页面中点击一首歌,播放器页面会把它保存到列表中,但是以前都还在。(完全禁用了cookie)
对于客户端技术小弟不了解,一次请求到服务器,服务器的响应不是会刷新那个播放列表窗口吗?
谢谢了。

[b]问题补充:[/b]
AJAX,那个我知道,我用过DWR.呵呵.

请问下,像这种情况,就是说,一个页面发给server的请求,ajax能做到server只刷下另一个页面的一部分?

麻烦说下,我知道一个页面可以.

thanks
[b]问题补充:[/b]
早晨起来就看到p君的回答了。
您辛苦了 :arrow: 。

关于局域刷新第一个问题,我没想明白。

笨阿。你说的子页面局部刷新,小弟觉得还是有些模糊。(也许是我的能力太差)。

我想不是server和flash直接交互吧。这样太不妥了。

哎,乱想一大通,感觉都无从问起了,哪里都是问题。

[b]问题补充:[/b]
恩,谢谢你。我现在有了自己的新想法,看看能不能实现。
:) 经验少,想的我直头疼。
成功了,在发表出来,大家看看。

[b]问题补充:[/b]
交流阿,交流完在用在我的想法上了。
:)
[b]问题补充:[/b]
小结:

:) :) 可能是我没说明白,我有自己的需求,要实现一个类似的父页面点击,子页面(包含applet)增加一行的功能。

到现在我实现的这种方式,并没有用到ajax,仅仅是js就可以了。
父页面有子页面窗口的引用,父页面调用子页面的js方法;
子页面同样也有父页面的引用,子页面从父页面获得相关的信息,调用applet增加就可以了。

父页面中点击,要判断是否有子页面的引用或者子页面是否关闭,如果ref为可空,或者子页面已关闭,就从新打开一个。如果都成立就添加了。

这里感谢pJun的帮助!谢谢。

8) LZ意思要把这个挂到你的新想法实现??! 还是...,有什么新想法方便交流吗?

LZ对现在Web的技术的了解有点跟不上了哦 :D
2005年开始LZ说的情况已经在慢慢的变化了,2007年这种变化被Google的一项应用Google Map推到了大家眼前,从那时到现在,已经几乎无人不知无人不晓了,它就是Ajax. 利用这种技术可以实现页面与后台的即时通讯和页面的局部刷新(这样就解释了LZ提到的刷新疑问了).

Ajax技术的相关资料,LZ有兴趣可以看看.
[quote]百度百科--Ajax
http://baike.baidu.com/view/1641.htm[/quote]

LZ如果想了解更多可以问Google,
如果想简单了解一下具体实现可以找本书<>.

希望上面的信息对LZ有用!~ :D

:? 让LZ见笑了,"老革命"遇到新问题,容我看看,能否给个应用的地址?

我回来回答LZ的问题了,花了我一个小时时间.不过也算是有收获了.
LZ的描述来看LZ有三个问题
1. 如何局部刷新不同页面?
这个问题是这样的,确实用了Ajax没有问题,不过用法稍有点不同. 以播放为例,点击播放后大概流程是这样的. 父页面(播放按钮所在的也没)要求open.window一个
子页面(播放器所在页面).这里确定了父子关系,父页面像浏览器发送一个请求,获取歌曲的相关信息如播放地址的Hash码等.父页面将这个请求组织好要求子页面刷新.子页面接受父页面的相关信息,在列表中添加你所点击的歌曲. 父页面显示歌曲加载完成的提示.
这样就完成了局部刷新的功能.父页面用的Ajax,子页面用的flash的处理.(flash能完成局部刷新LZ应该没疑问吧?想想各种各样的页面flash小游戏就清楚了.)

  1. 在没有Cookie的情况下,如何保留播放列表? 没有Cookie的情况下保留播放列表,我也试了请出了Cookie后,确实保留的播放列表.(我也很惊奇),后来我发现了一个东东就顿悟了.右键点击播放器-->设置-->"本地存储****(域名)可在本地存储多少信息"的提示被提示处理.默认这个设置是100K,设置成0,再试一切就回到了理解范围之内了.

以上就LZ的疑问做出的解释,请LZ自己验证下. :)

LZ应该对如何保存列表没有什么疑问了吧.
我重新来说一下我对局部刷新的看法
这次我分开来说:
父页面获取了一个添加播放歌曲的事件,发送一个Ajax请求到服务器获取相关的信息,获得反馈,执行回调函数.
回调函数里面有几个事情需要做
1.回调函数需要在父页面的顶部显示"歌曲加载成功"的提示.这是个父页面的局部刷新.
这样没完,父页面还需要告知子页面需要做什么?
2.打开播放器页面,告诉播放器页面需要添加的信息.如果播放器页面已打开,播放器页面执行的应该页面刷新操作.播放器获取歌曲的编号后,播放器展示了个loading的小图标,其实就是flash在于服务器通信,这个就不用多解析了吧.
下面是我跟踪到的,点击播放事件后子页面地址栏的两次变化.需要说明的是每次点击地址中的ID是不一样的.
[quote]
http://www.google.cn/music/url?q=http%3A%2F%2Fwww.google.cn%2Fmusic%2Ftop100%2Fplayer_iframe%3Fid%3DS42df4565711afeba%26type%3Dsong%26autoplay%3Dtrue&resnum=16&ct=pl&cad=chart_listing_dir&cd=7&ei=npRiSqifDaDCtALA07VA

http://www.google.cn/music/top100/player_iframe?id=[color=darkred]S42df4565711afeba[/color]&type=song&autoplay=true[color=red]#loaded[/color]
[/quote]

上面的信息,说明其实子页面并不是局部刷新其实应该是整个页面的重加载.
这里可能和LZ看到的子页面局部刷新有些差异,让我来解释这个疑问.其实是这样的,Google巧妙的将浏览器嵌入到了一个iframe中(名字叫loaded的iframe).实际刷新的是这个iframe(注意第二个地址的#loaded,html中锚点).所以看到的结果就是页面浏览器的局部刷新.

这样LZ应该能明白,局部刷新的问题了. 请LZ自己去验证下. :D

补充一点,其实播放页面在得到父页面告知的歌曲ID后就是flash与server的直接交互.LZ的想法没错!~ :) 这个也很正常,flash网络播放器都是这样的不是吗?只不过一般的播放器要到的都是URL,而这里要到的ID,通过ID从服务器获取URL等信息.这个也很容易理解,毕竟Google提供的都是正版音乐,URL信息属于敏感信息,自然要保护的严密点.
个人理解,请LZ参考.