至此可以选择章节,从服务器取回对应内容,局部刷新到页面上了。
由于篇幅限制,删减了部分数据后,发布全部源码如下。
main.go
/**
* CofoxS
* @Author: Jian Junbo
* @Email: junbojian@qq.com
* @Create: 2020/2/16 23:50
* Copyright (c) 2020 Jian Junbo All rights reserved.
*
* Description: go web 应用使用 ajax 传参的简单示例。也少量应用些 json
*/
package main
import (
"encoding/json"
"fmt"
"html/template"
"io/ioutil"
"log"
"net/http"
"time"
)
func main() {
http.HandleFunc("/", cofoxSayHelloMoonHandler)
http.HandleFunc("/getContent/", cofoxGetContentHandler)
err := http.ListenAndServe("", nil)
if err != nil {
fmt.Println(time.Now().Format("2006-01-20 15:04:05.0000000"), err.Error())
}
}
func cofoxGetContentHandler(writer http.ResponseWriter, request *http.Request) {
result, err := ioutil.ReadAll(request.Body)
if err != nil {
log.Println("接收请求错误!",err.Error())
return
}
var myKey askKey
err2 := json.Unmarshal([]byte(string(result)), &myKey)
if err2 != nil {
fmt.Println(err2.Error())
}
content := getAskXiaoShuo(myKey.K1, myKey.K2)
if len(content.Content)>0 {
fmt.Fprintln(writer, content)
}else {
fmt.Fprintln(writer, "想看什么书", myKey.K1, myKey.K2)
}
}
func cofoxSayHelloMoonHandler(writer http.ResponseWriter, request *http.Request) {
t, err := template.ParseFiles("index.html")
if err != nil {
fmt.Println("加载模板文件错误!",err.Error())
return
}
err1 := t.ExecuteTemplate(writer, "index.html", nil)
if err1 != nil {
fmt.Println("执行模板错误!",err1.Error())
return
}
}
//--小说 数据结构()
type zhanghuixiaoshuo struct {
ZhanghuiCode string
Title string
Content string
}
//--接收请求参数 数据结构()
type askKey struct {
K1 string
K2 string
}
//--西游记全部数据()
func dataSrcXiYouJi() (result []zhanghuixiaoshuo) {
var xiyoujiall []zhanghuixiaoshuo
var zhanghui zhanghuixiaoshuo
{
zhanghui.ZhanghuiCode = "1"
zhanghui.Title = "第一回:灵根育孕源流出,心性修持大道生"
zhanghui.Content = `
诗曰:
混沌未分天地乱,茫茫渺渺无人见。
自从盘古破鸿蒙,开辟从兹清浊辨。
覆载群生仰至仁,发明万物皆成善。
欲知造化会元功,须看西游释厄传。
盖闻天地之数,有十二万九千六百岁为一元。将一元分为十二会,乃子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥之十二支也。每会该一万八百岁。且就一日而论:子时得阳气,而丑则鸡鸣;寅不通光,而卯则日出;辰时食后,而巳则挨排;日午天中,而未则西蹉;申时晡而日落酉;戌黄昏而人定亥。譬于大数,若到戌会之终,则天地昏蒙而万物否矣。再去五千四百岁,交亥会之初,则当黑暗,而两间人物俱无矣,故曰混沌。又五千四百岁,亥会将终,贞下起元,近子之会,而复逐渐开明。邵康节曰:"冬至子之半,天心无改移。一阳初动处,万物未生时。"到此,天始有根。再五千四百岁,正当子会,轻清上腾,有日,有月,有星,有辰。日、月、星、辰,谓之四象。故曰,天开于子。又经五千四百岁,子会将终,近丑之会,而逐渐坚实。易曰:"大哉乾元!至哉坤元!万物资生,乃顺承天。"至此,地始凝结。再五千四百岁,正当丑会,重浊下凝,有水,有火,有山,有石,有土。水、火、山、石、土谓之五形。故曰,地辟于丑。又经五千四百岁,丑会终而寅会之初,发生万物。历曰:"天气下降,地气上升;天地交合,群物皆生。"至此,天清地爽,阴阳交合。再五千四百岁,正当寅会,生人,生兽,生禽,正谓天地人,三才定位。故曰,人生于寅。
感盘古开辟,三皇治世,五帝定伦,世界之间,遂分为四大部洲:曰东胜神洲,曰西牛贺洲,曰南赡部洲,曰北俱芦洲。这部书单表东胜神洲。海外有一国土,名曰傲来国。国近大海,海中有一座山,唤为花果山。此山乃十洲之祖脉,三岛之来龙,自开清浊而立,鸿蒙判后而成。真个好山!有词赋为证。赋曰:
势镇汪洋,威宁瑶海。势镇汪洋,潮涌银山鱼入穴;威宁瑶海,波翻雪浪蜃离渊。木火方隅高积上,东海之处耸既无父母,想是树上生的?"猴王道:"我虽不是树生,却是石里长的。我只记得花果山上有一块仙石,其年石破,我便生也。"祖师闻言,暗喜道:"这等说,却是天地生成的。你起来走走我看。"猴王纵身跳起,拐呀拐的走了两遍。祖师笑道:"你身躯虽是鄙陋,却像个食松果的猢狲。我与你就身上取个姓氏,意思教你姓'猢'。猢字去了个兽傍,乃是古月。古者,老也;月者,阴也。老阴不能化育,教你姓'狲'倒好。狲字去了兽傍,乃是个子系。子者,儿男也;系者,婴细也。正合婴儿之本论。教你姓'孙'罢。"猴王听说,满心欢喜,朝上叩头道:"好!好!好!今日方知姓也。万望师父慈悲!既然有姓,再乞赐个名字,却好呼唤。"祖师道:"我门中有十二个字,分派起名到你乃第十辈之小徒矣。"猴王道:"那十二个字?"祖师道:"乃广、大、智、慧、真、如、性、海、颖、悟、圆、觉十二字。排到你,正当'悟'字。与你起个法名叫做'孙悟空'好么?"猴王笑道:"好!好!好!自今就叫做孙悟空也!"正是:
鸿蒙初辟原无姓,打破顽空须悟空。
毕竟不知向后修些甚么道果,且听下回分解。
`
z1 := zhanghui
xiyoujiall = append(xiyoujiall, z1)
}
{
zhanghui.ZhanghuiCode = "2"
zhanghui.Title = "第二回:悟彻菩提真妙理,断魔归本合元神"
zhanghui.Content = ` 话表美猴王得了姓名,怡然踊跃;对菩提前作礼启谢。那祖师即命大众引悟空出二门外,教他洒扫应对,进退周旋之节。众仙奉行而出。悟空到门外,又拜了大众师兄,就于廊庑之间,安排寝处。次早,与众师兄学言语礼貌、讲经论道,习字焚香,每日如此。闲时即扫地锄园,养花修树,寻柴燃火,挑水运浆。凡所用之物,无一不备。在洞中不觉倏六七年,一日,祖师登坛高坐,唤集诸仙,开讲大道。真个是:
天花乱坠,地涌金莲。妙演三乘教,精微万法全。慢摇麈尾喷珠玉,响振雷霆动九天。说一会道,讲一会禅,三家配合本如然。开明一字皈诚理,指引无生了性玄。
孙悟空在旁闻听,喜得他抓耳挠腮,眉花眼笑。忍不住手之舞之,足之蹈之。忽被祖师看见,叫孙悟空道:"你在班中,怎么颠狂跃舞,不听我讲?"悟空道:"弟子诚心听讲,听到老师父妙音处,喜不自胜,故不觉作此踊跃之状。望师父恕罪!"祖师道:"你既识妙音,我且问你,你到洞中多少时了?"悟空道:"弟子本来懵懂,不知多少时节。只记得灶下无火,常去山后打柴,见一山好桃树,我在那里吃了七次饱桃矣。"祖师道:"那山唤名烂桃山。你既吃七次,想是七年了。你今要从我学些甚么道?"悟空道:"但凭尊祖教诲,只是有些道气儿,弟子便就学了。"
祖师道:"'道'字门中有三百六十傍门,傍门皆有正果。不知你学那一门哩?"悟空道:"凭尊师意思。弟子倾心听从。"祖师道:"我教你个'术'字门中之道,如何?"悟空道:"术门之道怎么说?"祖师道:"术字门中,乃是些请仙扶鸾,问卜揲蓍,能知趋吉避凶之理。"悟空道:"似这般可得长生么?"祖师道:"不能!不能!"悟空道:"不学!不学!"
祖师又道:"教你'流'字门中之道,如何?"悟空又问:"流字门中,是甚义理?"祖师道:"流字门中,乃是儒家、释家、道家、阴阳家、墨家、医家,或看经,或念佛,并朝真降圣之类。"悟空道:"似这般可得长生么?"祖师道:"若要长生,也似'壁里安柱'。"悟空道:"师父,我是个老实人,不晓得打市语。怎么谓之'壁里安柱'?"祖师道:"人家盖房,欲图坚固,将墙壁之间,立一顶柱,有日大厦将颓,他必朽矣。"悟空道:"据此说,也不长久。不学!不学!"
祖师道:"教你'静'字门中之道,如何?"悟空道:"静字门中,是甚正果?"祖师道:"此是休粮守谷,清静无为,参禅打坐,戒语持斋,或睡功,或立功,并入定坐关之类。"悟空道:"这般也能长生么?"祖师道:"也似'窑头土坯'。"悟空笑道:"师父果有些滴。一行说我不会打市语。怎么谓之'窑头土坯'?"祖师道:"就如那窑头上,造成砖瓦之坯,虽已成形,尚未经水火煅炼,一朝大雨滂沱,他必滥矣。"悟空道:"也不长远。不学!不学!"
祖师道:"教你'动'字门中之道,如何?"悟空道:"动门之道,却又怎样?"祖师道:"此是有为有作,采阴补阳,攀弓踏弩,摩脐过气,用方炮制,烧茅打鼎,进红铅,炼秋石,并服妇乳之类。"悟空道:"似这等也得长生么?"祖师道:"此欲长生,亦如'水中捞月'。"悟空道:"师父又来了!怎么叫做'水中捞月'?"祖师道:"月在长空,水中有影,虽然看见,只是无捞摸处,到底只成空耳。"悟空道:"也不学!不学!"
祖师闻言,咄的一声,跳下高台,手持戒尺,指定悟空道:"你这猢狲,这般不学,那般不学,却待怎么?"走上前,将悟空头上打了三下,倒背着手,走入里面,将中门关了,撇下大众而去。唬得那一班听讲的,人人惊惧,皆怨悟空道:"你这泼猴,十分无状!师父传你道法,如何不学,却与师父顶嘴?这番冲撞了他,不知几时才出来啊!"此时俱甚抱怨他,又鄙贱嫌恶他。悟空一些儿也不恼,只是满脸陪笑。原来那猴王,已打破盘中之谜,暗暗在心,所以不与众人争竞,只是忍耐无言。祖师打他三下者,教他三更时分存心,倒背着手,走入里面,将中门关上者,教他从后门进步,秘处传他道也。
当日悟空与众等,喜喜欢欢,在三星仙洞之前,盼望天色,急不能到晚。及黄昏时,却与众就寝,假合眼,定息存神。山中又没打更传箭,不知时分,只自家将鼻孔中出入之气调定。约到子时前后,轻轻的起来,穿了衣服,偷开前门,躲离大众,走出外,抬头观看。正是那:
月明清露冷,八极迥无尘。
深树幽禽宿,源头水溜汾。
飞萤光散影,过雁字排云。
正直三更候,应该访道真。
你看他从旧路径至后门外,只见那门儿半开半掩。悟空喜道:"老师父果然注意与我传道,故此开着门也。"即曳步近前,侧身进得门里,只走到祖师寝榻之下。见祖师蜷局身躯,朝里睡着了。悟空不敢惊动,即跪在榻前。
毕竟不知怎生结果,居此界终始如何,且听下回分解。`
z1 := zhanghui
xiyoujiall = append(xiyoujiall, z1)
}
{
zhanghui.ZhanghuiCode = "3"
zhanghui.Title = "第三回:四海千山皆拱伏,九幽十类尽除名"
zhanghui.Content = ` 却说美猴王荣归故里,自剿了混世魔王,夺了一口大刀,逐日操演武艺,教小猴砍竹为标,削木为刀,治旗幡,打哨子,一进一退,安营下寨,顽耍多时。忽然静坐处,思想道:"我等在此,恐作耍成真,或惊动人王,或有禽王、兽王认此犯头,说我们操兵造反,兴师来相杀,汝等都是竹竿木刀,如何对敌?须得锋利剑戟方可。如今奈何?"众猴闻说,个个惊恐道:"大王所见甚长,只是无处可取。"正说间,转上四个老猴,两个是赤尻马猴,两个是通背猿猴,走在面前道:"大王,若要治锋利器械,甚是容易。"悟空道:"怎见容易?"四猴道:"我们这山,向东去,有二百里水面,那厢乃傲来国界。那国界中有一王位,满城中军民无数,必有金银铜铁等匠作。大王若去那里,或买或造些兵器,教演我等,守护山场,诚所谓保泰长久之机也。"悟空闻说,满心欢喜道:"汝等在此顽耍,待我去来。"
好猴王,急纵筋斗云,霎时间过了二百里水面。果然那厢有座城池,六街三市,万户千门,来来往往,人都在光天化日之下。悟空心中想道:"这里定有现成的兵器,我待下去买他几件,还不如使个神通觅他几件倒好。"他就捻起诀来,念动咒语,向巽地上吸一口气,呼的吹将去,便是一阵风,飞沙走石,好惊人也。
炮云起处荡乾坤,黑雾阴霾大地昏。
江海波翻鱼蟹怕,山林树折虎狼奔。
诸般买卖无商旅,各样生涯不见人。
殿上君王归内院,阶前文武转衙门。
千秋宝座都吹倒,五凤高楼幌动根。风起处,惊散了那傲来国君王,三街六市,都慌得关门闭户,无人敢走。悟空才按下云头。径闯入朝门里。直到兵器馆、武库中,打开门扇,看时,那里面无数器械:刀、枪、剑、戟、斧、钺、毛、镰、鞭、钯、挝、简、弓、弩、叉、矛,件件俱备。一见甚喜道:"我一人能拿几何?还使个分身法搬将去罢。"好猴王,即拔一把毫毛,入口嚼烂,喷将处去,念动咒语,叫声:"变!"变做千百个小猴,都乱搬乱抢;有力的拿五七件,力小的拿三二件,尽数搬个罄净。径踏云头,弄个摄法,唤转狂风,带领小猴,俱回本处。
高迁上品天仙位,名列云班宝录中。
毕竟不知授个甚么官爵,且听下回分解。`
z1 := zhanghui
xiyoujiall = append(xiyoujiall, z1)
}
{
zhanghui.ZhanghuiCode = "81"
zhanghui.Title = "第八十一回:镇海寺心猿知怪,黑松林三众寻师"
zhanghui.Content = ` 话表三藏师徒到镇海禅林寺,众僧相见,安排斋供。四众食毕,那女子也得些食力。渐渐天昏,方丈里点起灯来,众僧一则是问唐僧取经来历,二则是贪看那女子,都攒攒簇簇,排列灯下。三藏对那初见的喇嘛僧道:"院主,明日离了宝山,西去的路途如何?"那僧双膝跪下,慌得长老一把扯住道:"院主请起,我问你个路程,你为何行礼?"那僧道:"老师父明日西行,路途平正,不须费心。只是眼下有件事儿不尴魀,一进门就要说,恐怕冒犯洪威,却才斋罢,方敢大胆奉告:老师东来,路遥辛苦,都在小和尚房中安歇甚好;只是这位女菩萨,不方便,不知请他那里睡好。"三藏道:"院主,你不要生疑,说我师徒们有甚邪意。早间打黑松林过,撞见这个女子绑在树上。小徒孙悟空不肯救他,是我发菩提心,将他救了,到此随院主送他那里睡去。"那僧谢道:"既老师宽厚,请他到天王殿里,就在天王爷爷身后,安排个草铺,教他睡罢。"三藏道:"甚好,甚好。"遂此时,众小和尚引那女子往殿后睡去。长老就在方丈中,请众院主自在,遂各散去。三藏吩咐悟空:"辛苦了,早睡早起!"遂一处都睡了,不敢离侧,护着师父。渐入夜深,正是那:
玉兔高升万籁宁,天街寂静断人行。
银河耿耿星光灿,鼓发谯楼趱换更。
一宵晚话不题。及天明了,行者起来,教八戒沙僧收拾行囊马匹,却请师父走路。此时长老还贪睡未醒,行者近前叫声"师父。"那师父把头抬了一抬,又不曾答应得出。行者问:"师父怎么说?"长老呻吟道:"我怎么这般头悬眼胀,浑身皮骨皆疼?"八戒听说,伸手去摸摸,身上有些发热。呆子笑道:"我晓得了,这是昨晚见没钱的饭,多吃了几碗,倒沁着头睡,伤食了。"行者喝道:"胡说!等我问师父,端的何如。"三藏道:"我半夜之间,起来解手,不曾戴得帽子,想是风吹了。"行者道:"这还说得是,如今可走得路么?"三藏道:"我如今起坐不得,怎么上马?但只误了路啊!"行者道:"师父说那里话!常言道,一日为师,终身为父。我等与你做徒弟,就是儿子一般。又说道,养儿不用阿金溺银,只是见景生情便好。你既身子不快,说甚么误了行程,便宁耐几日何妨!"兄弟们都伏侍着师父,不觉的早尽午来昏又至,良宵才过又侵晨。
光阴迅速,早过了三日。那一日,师父欠身起来叫道:"悟空,这两日病体沉疴,不曾问得你,那个脱命的女菩萨,可曾有人送些饭与他吃?"行者笑道:"你管他怎的,且顾了自家的病着。"三藏道:"正是,正是。你且扶我起来,取出我的纸、笔、墨,寺里借个砚台来使使。"行者道:"要怎的?"长老道:"我要修一封书,并关文封在一处,你替我送上长安驾下,见太宗皇帝一面。"行者道:"这个容易,我老孙别事无能,若说送书:人间第一。你把书收拾停当与我,我一筋斗送到长安,递与唐王,再一筋斗转将回来,你的笔砚还不干哩。但只是你寄书怎的?且把书意念念我听,念了再写不迟。"长老滴泪道:"我写着:
臣僧稽首三顿首,万岁山呼拜圣君;
文武两班同入目,公卿四百共知闻:
当年奉旨离东土,指望灵山见世尊。
不料途中遭厄难,何期半路有灾迍。
僧病沉疴难进步,佛门深远接天门。
有经无命空劳碌,启奏当今别遣人。"
行者听得此言,忍不住呵呵大笑道:"师父,你忒不济,略有些病儿,就起这个意念。你若是病重,要死要活,只消问我。我老孙自有个本事,问道'那个阎王敢起心?那个判官敢出票?那个鬼使来勾取?'若恼了我,我拿出那大闹天宫之性子,又一路棍,打入幽冥,捉住十代阎王,一个个抽了他的筋,还不饶他哩!"三藏道:"徒弟呀,我病重了,切莫说这大话。"
八戒上前道:"师兄,师父说不好,你只管说好,十分不尴魀。我们趁早商量,先卖了马,典了行囊,买棺木送终散火。"行者道:"呆子又胡说了!你不知道师父是我佛如来第二个徒弟,原叫做金蝉长老,只因他轻慢佛法,该有这场大难。"八戒道:"哥啊,师父既是轻慢佛法,贬回东土,在是非海内,口舌场中,托化做人身,发愿往西天拜佛求经,遇妖精就捆,逢魔头就吊,受诸苦恼也够了,怎么又叫他害病?"行者道:"你那里晓得,老师父不曾听佛讲法,打了一个盹,往下一失,左脚下躧了一粒米下界来,该有这三日病。"八戒惊道:"象老猪吃东西泼泼撒撒的,也不知害多少年代病是!"行者道:"兄弟,佛不与你众生为念。你又不知,人云锄禾日当午,汗滴禾下土。谁知盘中餐,粒粒皆辛苦!师父只今日一日,明日就好了。"三藏道:"我今日比昨不同,咽喉里十分作渴。你去那里,有凉水寻些来我吃。"行者道:"好了!师父要水吃,便是好了。等我取水去。"
八戒道:"老猪晦气!先拿我顶缸!"行者道:"你夜来说都在你身上,如何打仰?"八戒道:"不要嚷,等我去。"呆子放下钯,抖抖衣裳,空着手,跳下高山,找寻路径。这一去,毕竟不知好歹如何,且听下回分解。`
z1 := zhanghui
xiyoujiall = append(xiyoujiall, z1)
}
result = xiyoujiall
return
}
//--取得指定小说的指定章节()
func getAskXiaoShuo(xiaoshuoname, zhangjiecode string) (result zhanghuixiaoshuo) {
//--获得数据源()
srcData := dataSrcXiYouJi()
//--遍历对比获取指定内容()
for _, datum := range srcData {
if datum.ZhanghuiCode == zhangjiecode {
result = datum
break
}
}
return
}
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Love Moon</title>
</head>
<body>
<div>《西游记》</div>
<div><button onclick="ajaxBackDate('xiyouji','1','showContent')">第一回:灵根育孕源流出,心性修持大道生</button></div>
<div><button onclick="ajaxBackDate('xiyouji','2','showContent')">第二回:悟彻菩提真妙理,断魔归本合元神</button></div>
<div><button onclick="ajaxBackDate('xiyouji','3','showContent')">第三回:四海千山皆拱伏,九幽十类尽除名</button></div>
...
<div><button onclick="ajaxBackDate('xiyouji','81','showContent')">第八十一回:镇海寺心猿知怪,黑松林三众寻师</button></div>
<button onclick="ajaxBackDate('xiyouji','999','showContent')">不存在的章节</button>
<div id="showContent" style="background-color: darkseagreen">等待选择章回</div>
<script type="text/javascript">
//ajax取得数据
function ajaxBackDate(k1, k2, showValue) {
//发送异步请求
//1.创建ajax引擎对象----所有操作都是由ajax引擎完成
var xmlHttp = new XMLHttpRequest();
//2.为引擎对象绑定监听事件
xmlHttp.onreadystatechange = function () {
//当状态变化时处理的事情
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
//5.接收响应信息
// var data = xmlHttp.responseText;
var data = xmlHttp.response;
// alert(data);
// return data;
var tempShow = document.getElementById(showValue);
tempShow.innerText = data;
}
};
//3.绑定服务器地址
//第一个参数:请求方式GET/POST
//第二个参数:后台服务器地址
//第三个参数:是否是异步 true--异步 false--同步
xmlHttp.open("POST", "/getContent/", true);
//4.发送合适的请求头部信息
// xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//5.发送请求
var param = "{\"K1\":\"" + k1 + "\",\"K2\":\"" + k2 + "\"}";
xmlHttp.send(param);
}
</script>
</body>
</html>