安静
PHP技术博客

140213 discuz添加ajax请求导致内部错误,无法显示此内容

这件事情很蠢,不过有必要记录下。

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

赞(0) 打赏
未经允许不得转载:AJ's Blog » 140213 discuz添加ajax请求导致内部错误,无法显示此内容
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏