ajax请求本地md以及简单封装xhr ajax请求

ajax请求本地md以及简单封装xhr ajax请求,第1张

使用ajax请求本地md文件

注意1,如果是POST请求,要设置请求头,因为xhr ajax默认content-type是text/plain,而一般ajax请求或者表单的content-type是application/x-www-form-urlencoded,要注意后端可以解析的content-type格式

关于ajax content-type详细内容看这里 传送门

注意2,XMLHttpRequest在IE8以下不兼容,IE8以下使用ajax的方法是ActiveXObject('Microsoft.XMLHttp'),所以可以做一下兼容:

当然也可以用try-catch

执行结果是:

在JavaScript中解析markdown需要用到一些js解析库,目前比较流行的是marked.js和showdown.js 二者比较

根据github上的star和bootcdn上的使用情况,选择marked作为解析库

解析结果:(红色部分是引用,也就是md语法">")

结果显而易见,没有样式

所以接下来要布置一下md渲染的样式,这里采用 github-markdown-css ,同时将展示md内容的标签附上样式class="markdown-body",渲染结果如下:

经过上面三步,已经可以成功请求到本地的markdown文件。回过头来看整个过程,觉得xhr ajax请求应该封装成一个外部函数来调用。

设置本地XHR对象的“名-值”映射。例如,可以在需要时设置“withCredentials”为真而执行跨域名请求。

XHR:XMLHttpRequest (XHR) ,基于XML技术的Http请求。

Ajax只是封装了xmlhttprequest重新开启了一个线程。对返回值,做出了响应。而如果我们不用xhr的异步的话,而只用同步的话,我们对这个请求,未完成之前,不能发出下一个请求。而关于登陆,局部刷新这个观点,我并不能理解。使用xhr任然能实现局部刷新,只不过,不能异步处理其他的。如果没有对xhr处理的话,那么浏览器默认的只是会重新加载一个页面。我猜。因此,会刷新掉原来的页面。如果我们用了ajax封装的话,我们就会对其进行处理。而不会采用浏览器的默认处理方式。因此ajax只是一个异步请求的 *** 作。并没有达到局部刷新的结果。为啥达到异步刷新的结果,是因为我们没有对浏览器的返回值做处理。浏览器默认的是对我们返回的值,弄到子页面处理。如果,我们对浏览器返回的值,做了处理的话,那么就不会是一个子页面了。不过这样的话,确实起到了局部刷新的作用啊。因为有些我们并没法对请求的结果作出处理。没有拖慢不拖慢的,异步请求还比一个一个跑要快的。时间大多都在数据查询上。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11520448.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存