这件事情很蠢,不过有必要记录下。
discuz添加ajax请求自动填充内容
ajaxget() AJAX/GET请求 ajaxget(url, showid, waitid, loading, display, recall) key 默认值 含义 url (必填) 请求的 url showid (必填) ajax 返回信息显示区域的 id waitid showid ajax 请求过程中显示等待信息区域的 id display 信息返回后 showId 的 style.display 值 recall 信息返回后执行的代码
php-ajaxget-demo
//demo: <div id="466885"></div> <script> ajaxget("bbsapi/api.php?usermail=a@80aj.com", "466885"); </script> //demo back api.php <?xml version="1.0" encoding="utf-8"?> <root><![CDATA["返回html内容之类"]]></root>
其实上面的已经简单的实现了discuz的ajaxget请求操作,并且在chrome,360,firefox,safari,ie11之类的浏览器下都正常。可是在ie9之类的浏览器下则不正常会显示:
导致内部错误,无法显示此内容
网上找了下资料说是xml描述格式不对,但反复验证测试跟返回的内容没有半毛钱关系。最后通过在浏览器中打开ajax请求内容做对比才发现:
虽然chrome之类得没有能正确的解析出内容是xml,但是因为格式是对的,所以在ajax请求以后,浏览器就人为是正常的xml可被js解析。但是在ie9以下对于这条的理解比较愚蠢导致了上述的错误,所以我们只需要:
在AJax头部输出增加xml协议描述即可。
//添加header输出饥渴 header('Content-Type: text/xml');
相关资料:
http://www.jb51.net/cms/44106.html
http://dev.discuz.org/wiki/index.php?title=Function_js