山东招远县有个叫张于旦的人,性格豪放不羁,当时在一座寺庙里读书。县令鲁公是三韩人,有个女儿喜欢打猎。张于旦在野外遇见过她,见她姿容娟秀,穿着锦缎貂皮袄,骑着小黑马,风度翩翩,像画中人。张于旦回到庙里,回想起鲁公女儿的美貌,十分倾慕。后来听说她暴病去世,他伤心得痛不欲生。鲁公因离家乡太远,将女儿灵柩暂寄寺中。张于旦对她敬若神明,每天焚香祭奠,祷告道:“我有幸见过小姐,常在梦中见你。没想到你突然去世。今天我们虽近在咫尺,却人鬼相隔,我心中怅恨痛切。你若有灵,应当来安慰我。”张于旦日夜祷告,持续了半个月。
一天晚上,张于旦在灯下夜读,抬头见鲁家小姐含笑站在灯前。张于旦慌忙起身问候,鲁家小姐说:“感念你的深情,我无法克制自己,也顾不得私奔之嫌了。”张于旦大喜,二人欢爱。从此,鲁家小姐每晚都来。有一天她说:“我生前爱好打猎,杀生太多,罪孽深重,死后灵魂无归宿。你若爱我,请替我念一藏数的《金刚经》,我生生世世不忘你的恩情。”张于旦诚心诵经,每天夜里在灵柩前念经。有一次,张于旦想带她回家过节,她担心腿脚软弱,张于旦便抱着她走,像抱婴儿一样轻。从此,他习以为常,甚至参加考试也带着她,但必须夜间赶路。后来,张于旦要参加秋天的乡试,鲁家小姐说:“你的福分不厚,去也是白费功夫。”张于旦听从,没有去应考。
过了四五年,鲁公罢官,因贫穷无力将女儿棺材运回故乡,打算就地安葬,却找不到墓地。张于旦对鲁公说:“我家离寺庙不远,有一块薄田,愿意献来安葬你家小姐。”鲁公很高兴。张于旦帮助安葬了灵柩,鲁公非常感激,却不知他为何这样做。鲁公走后,二人仍亲密如初。
一天夜晚,鲁家小姐在张于旦怀中流泪,说:“五年的恩爱,今天要分别了!你对我的恩义,我几辈子也报答不完!”张于旦惊讶地问怎么回事。她回答:“承蒙你给我如此恩惠,已经念满一藏数的经咒了,今天我要托生到河北户部尚书卢家。若你不忘记今天,十五年后的八月十六日,请到卢家见我。”张于旦流泪道:“我已三十多岁,再过十五年,我也快死了,就是见你,又能怎样?”鲁家小姐说:“我愿意当你的奴婢报答你。”过了一会儿又说:“你送我六七里地吧。这段路荆棘多,我的衣裙太长,怕不容易过去。”她搂住张于旦的脖子,张于旦抱着她来到大道旁。见路旁有一队车马,车上或骑着一人,或骑着两人,唯独一辆镶金银、挂锦绣帘子的马车上坐着一个老太婆。她见鲁家小姐来了,喊道:“来了吗?”小姐答道:“来了。”回头对张于旦说:“送到这儿吧。你先回去,不要忘了我的话。”张于旦答应了。她走近马车,老太婆拉她上车,车轮启动,其余马车也都走了。
张于旦回到家里,把分别的日子记在墙上,虔诚地念佛。他梦见神人告诉他:“你的志向很好,但还需去南海。”张于旦问:“南海有多远?”神人答:“南海就在你的心中。”醒来后,他更加专心修行。三年后,他的两个儿子相继考取功名。张于旦虽然富贵,但仍然行善不懈。一天夜里,他梦见菩萨告诉他:“你一心向善,但命不长,我已为你求情。”张于旦感激磕头。菩萨赐他香茶和洗浴,池水清澈温暖,带有荷叶香味。醒来后,他身体逐渐强健,白胡子脱落,脸上皱纹舒展,变得像十五六岁的孩子。他过分注意修饰,儿子们劝他不要这样。后来,他的妻子去世,儿子们想为他找个继室,张于旦说:“等我去河北一趟再说。”
张于旦记得和鲁家小姐的约定,便前往河北,得知卢尚书有个聪明美貌的女儿。姑娘拒绝了许多求婚者,因为她记得前世和张于旦的誓约。父母不信,认为张于旦已老或去世,便阻止他见女儿。张于旦来到卢家被拒,只好在城外打听消息。
卢家小姐认为张于旦背叛誓约,茶饭不进。母亲劝她,张于旦可能已死,即使没死,背叛誓约也不怪她。姑娘卧床不起,卢公心生疑虑,假装郊游,在城外遇到年轻的张于旦,感到惊讶。卢公邀请他回家,告诉女儿。姑娘见张于旦与记忆中不符,哭诉父亲欺骗。卢公解释这是张于旦,姑娘不信,继续哭泣。卢公对客人态度冷淡,张于旦觉察后告辞。卢家小姐痛哭几天后去世。
这天夜里,张于旦梦见卢公的女儿前来对他说:“真的是你来找我吗?因为我们年龄和相貌差距太大,见面时无法相认,结果成了永别。我已经因忧愤而死,请你赶紧去土地祠招我的魂,还能复活,再迟就来不及了。”张于旦梦醒后,急忙到卢公府上打听,果然他的女儿已经去世两天了。张于旦非常悲痛,到停灵的屋里吊唁,并把梦告诉了卢公。卢公听后,到土地祠为女儿招魂。回来后掀开女儿身上的被子,抚摸着她的尸体,呼唤并为她祈祷。不一会儿,听见女儿喉咙里发出“咯咯”声,又见她的嘴唇张开,吐出像冰块一样的黏痰。卢公把她移到床上,女儿渐渐发出呻吟声,果然复活了。卢公非常高兴,邀请张于旦,设宴庆祝。卢公详细询问张于旦的家世,得知他出身大户人家,更加高兴,便选定吉日良辰,让他与女儿成亲。
半个月后,张于旦带新娘回家。卢公送女儿到张家,住了半年才离开。张于旦夫妇在一起,像小两口一样,不知情的人常把他们误认为公婆。卢公一年后去世,他家里的小男孩被豪强诬陷,家产几乎耗尽。张于旦把他接来抚养,让他在张家安了家。