opensns在阿里云Linux虚拟主机运行时后台ajax错误

解决方法:

1.   Application\Admin\Static\js\common.js 的  $('.ajax-post').click(function () {方法体里面的   $.post(target, query).success(function (data) {   成功代码里面, 添加以下代码,对返回信息进行过滤

var s_json = JSON.stringify(data);               		//把object转换成json字符串
s_json = s_json.replace(/\\n/g, "");			        //去掉换行
s_json = s_json.replace(/\\r/g, "");			        //去掉回车
s_json = s_json.replace(/\\\\u/g, "\\u");			//将反斜杠+双引号  变成  双引号
s_json = s_json.replace(/\\\"/g, "\"");			        //将反斜杠+双引号  变成  双引号
s_json = s_json.replace(/\\\\\//g, "\/");			//将两个反斜杠+斜杠  变成 斜杠
s_json = s_json.substring(1, s_json.length-1);			//去掉第一个以及最后一个双引号
//alert(s_json);
data =  JSON.parse(s_json);                                     //把字符串转换成json对象
//alert(data.status + "   " +  data.info + "  " + data.url);





2.    ThinkPHP\Library\Think\Controller.class.php   的    dispatchJump   方法里面,将 ajax返回的 status修改为字符类型,因为JSON.parse对json格式是非常严格的



这是临时的解决方法,未深究,可能还有更好的方法。


--------------------------------------------------------------------------------------------------- 我是分隔线


上面并非解决方案,该问题的根源原来是thinkphp的Model产生的。

产生问题的Model:


没有问题的Model: 



意外不意外,惊喜不惊喜,就是两个换行,就是两个换行,两个换行...


在你的Controller的初始化函数里面,假如你使用了

$this->productModel = D('Product/Product');

这样的代码,然后,在其他方法体里面使用ajaxReturn函数 或者  $this->success("xxx");  或者 $this->error("xxx");的时候,它就连带$this->productModel里面的换行也一起给你骂人


阿里云虚拟主机的magic_quotes_gpc,把它也禁了吧:































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值