这段时间赶着做Millennium系统的OPAC整合,已经七七八八,实在是忙得够呛。
对于此次新系统的OPAC整合工作,虽然受Millennium系统本身的限制甚多,我还是想做好一些,希望能能按照标准的XHTML来编写网页文件,以方便开展下一步的用户自定义模块工作;希望能实现心中的关于用户检索词热点记录系统、关于书目TAGGING系统的一些设想;希望能做出一两个可轻松部署的,独立于网站及自动化系统之外的开源模块。当然这些希望的实现,可能一两个月,也可能半年一年。毕竟Millennium系统从招标到安装,从培训到测试,我都没有接触,现在临阵磨枪,有点压力;另外,工作也不能只做自己感兴趣的东西,有些不感兴趣的事情,也要认真做好。
没太多思路写博客,只能将上午的工作记录一下,都是些细节的东西,不过也耗费了些时间,忽然发现当自己没有状态的时候,写程序真是痛苦不已。
呵呵,废话就不说了,讲讲这两天做的事情。此次OPAC整合,任务很简单——一是实现网站首页提交检索,返回检索结果;二是实现用户登录网站后,可直接查看借阅信息及进行续借预约等操作,无需二次登录;三是把显示页面改一下,以符合网站的风格。至于上面所提到的希望,则是我感兴趣的东西。当务之急,当然是完成任务先。
总的来说,进展还算顺利,但今天早上碰到了编码问题,却也让我着急了一阵。当然,解决方案还是有的,但总觉得不是我想要的效果,不过也只能带点遗憾匆匆上马。问题是这样的:
Millennium系统的webopac模块采用Unicode进行编码,而我们的网站采用的字符集是gb2312(痛哭啊,刚开始做网站的时候还年轻,没想到那么多……),所以,当我们想从网站提交检索词到OPAC系统时,由于编码不同,在OPAC中显示为乱码,检索不能正常进行,同样的问题也出现在用户从网站登录系统的脚本中。因此,必须将网站提交的字符串进行编码,才能提交给Millennium OPAC系统。
主要是用到了javascript的encodeURI()函数将提交字符编码。
| <script language=”javascript”> <!– function opac() { var t=”"; var s=”"; t=document.all.t.value; s=document.all.s.value; s=encodeURI(s); s=”http://202.116.13.244/search*chx/a?searchtype=”+t+”&searcharg=”+rs+”&searchscope=1″; window.location.href=rs;} –> </script> <select <option value=”X” >关键词</option> <option value=”t” <option value=”a”>责任者</option> <option value=”i”>ISBN</option> <option value=”d”>主题</option> <option value=”c”>索书号</option> </select> <input name=”s” id=”s” style=”width: 80%” onFocus=this.select() <a href=”#” id=”alink” onClick=”javascript:opac();”><img |
初衷是用脚本将检索词编码后,再重新赋值给表单项,然后通过表单提交检索,但实践证明编码后的检索词,浏览器会再次编码,OPAC系统同样无法接收正确的检索词;那么只能直接提交正确的URL至OPAC系统。脚本中没有用window.open(),进行提交,因为用户可能拦截弹出窗口,所以用上了window.location.href,不过缺点之一是在当前窗口打开,不是很好,其次是不能使用form,用户输完检索词后直接回车没有提交反应,所以针对检索图标按钮作了个判断,如果用户在文本框中回车则点击提交。任务之一实现了,不过感觉怪怪的:(
任务之二中,解决方式和ILAS同出一辙,思路都是从网站中得到用户账户信息,再通过表单提交到系统,从而通过其验证。按道理来说,Millennium系统应该有更好的方式选择,可惜在网上能检索到的信息太少,也只能这么个样子将就了。
任务之三倒是做了点有意思的事情,大量的采用DIV进行布局,加上CSS,感觉很是美妙,呵呵~先打个基础,下一步的拖曳、自定义显示,就从这里出发了~
其实所做的是个小事情,但正因为小,我几乎没能google或者baidu到什么有用的关于Millennium
OPAC系统整合资料,也只能到各个用此系统的图书馆看看,Millenium系统帮助全英文,在OPAC方面的描述也不是很清晰,对我来说,非常不友好。
希望能得到高人的指点,一是如何更好的解决这个编码问题,二是在哪里能找到Millennium系统的web
opt设置方面的清晰的参考。
希望接下来,能有之二之三。
Tags: javascript, millennium, OPAC, unicode
沙发。
标题的Unicode打错了
的确疏忽了,谢谢!
小钟先生很有思想,不错的Geek,赞一个.
谢谢槐师夸奖,小钟愧不敢当。常看槐师博文,收益良多。希望能有机会得到槐师指点。
先学习了,这也是我的研究方向涉及到的啊!
任务一中,如果用form的话,在form提交的时候用onSubmit事件来触发opac()是否可行?这样按钮可以设置为“submit”,就可以捕捉回车了。我们的正好相反,主页是utf-8,OPAC是GB2312,去年底弄了几天也没个结果,至今还放着呢。任务二中,意思好像是两个系统,读者从一个系统提交信息后自动从后台提交到另外一个系统中?这样的话如何把第二个系统中的session和第一个系统中的session相统一?也是刚开始应用CSS+DIV布局,只在IE内核的浏览器中还可以,但是要在Firefox、Netscape……中弄的都不出问题感觉就很费劲了。知道您已经很长时间了,只是一直做个看客,上周在武汉又听图林丫枝老师谈到您,很是佩服,以后技术方面还要向您多多请教:)
呵呵,好长的留言啊~赞一个,谢谢鼓励。任务一中,用form来触发不行,你可以看到,我连form都没用。因为form再提交的时候,会将已编码的字符串再按照一般编码(2 bytes)的形式再次转换,所以不行。任务二其实就是通过系统一确认用户身份,然后黑箱操作,帮助用户登录系统二。任务三的DIV+CSS布局,兼容性应该要更强一些。呵呵,在我看来,图林中不乏理论大师和高瞻远瞩之人,却颇为缺少像你我一样的代码小兵,有想法总要有人去实现,望你我共勉。
受教了。我说去年怎么就弄不好,原来是根本就没弄明白。目前好像都推荐DIV+CSS布局,但是因为各浏览器解释起来不一样,感觉还是表格好弄一些,有时候DIV做不好就用表格了,呵呵。