在IOS环境下,前几个月同样的源代码,无论基座运行还是打包,ajax返回都是正常的;
但目前发现返回字符串较长的ajax经常出现406错误(此时httpResponse中返回的json字符串明显缺一部分,但仍有两三成可能ajax调用成功)。怀疑plus关于IOS环境下的Webview做过调整(Android同样代码没有问题),请问可以怎么处理?谢谢!  
APP端,问题页面部分代码(从主页进入问题页面直接ajax访问服务器接口):
mui.plusReady(function() {  
    //默认查询全部  
    onSearchRegularJobList();  
});  
function onSearchRegularJobList() {  
    mui.ajax('http://192.168.60.60:8735/WCFService/SRV/TestJSON', {  
        type: 'get',  
        timeout: 10000,  
        crossDomain: true,  
        contentType: 'application/*',//这里原来是‘application/json’  
        data: ‘参数’,  
        dataType: 'text',  
        beforeSend: function(xhr) {  
            jobListContentElem.innerHTML = htmMsg.GetBeforeSend();  
        },  
        success: function(data, ts, xhr) {  
            var jdata = JSON.parse(JSON.parse(data));  
            var bizData = jdata.Result.Data || [];  
            var resHtml = template("pmyJobListContentTmpl", bizData );  
            jobListContentElem.innerHTML = resHtml;//显示数据  
        },  
        error: function(xhr, ts, et) {  
            console.log(xhr.status);//较长的返回字符串容易发生406错误  
            console.log(xhr.responseText);//发生406错误时,这里常有返回字符串的部分,明显不全  
            jobListContentElem.innerHTML = htmMsg.GetSendError(ts, et);//页面显示连接错误信息  
        }  
    });  
};服务接口部分(基于.net WCF):
[OperationContract]
[WebInvoke(Method = "GET",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json)]
string TestJSON(string argServiceParam);  
服务实现部分(基于.net WCF,简化为直接返回大串JSON字符串更容易看清,这里为了不使排版混乱,用字符串连接示意测试数据生成的过程 ):
public string TestJSON(string argServiceParam)
{
int len = 300;
string tData = "";
for (int i = 0; i < len; i  )
{
tData  = ",{\"RQ\":\"2016-07-09 00:00:00\",\"JZ\":\"公用系统\",\"ZY\":\"燃料\",\"BC\":\"白班\",\"SBMC\":\"\",\"GZNR\":\"系统运行方式切换(A.B侧设备在夜班第二次上煤切换、#10B每日白班第一次上煤时运行),系统切换及#10B胶带机试用情况在运行日志中记录。\",\"WCQK\":\"\",\"ZRBM\":\"燃运部\",\"BZ\":\"\"}";
}
return "{\"Status\":{\"Success\":true,\"Code\":\"0000\",\"Message\":\"OK\"},\"Result\":{\"Data\":[{\"RQ\":\"2016-07-09 00:00:00\",\"JZ\":\"公用系统j\",\"ZY\":\"燃料j\",\"BC\":\"白班j\",\"SBMC\":\"\",\"GZNR\":\"系统运行方式切换(A.B侧设备在夜班第二次上煤切换、#10B每日白班第一次上煤时运行),系统切换及#10B胶带机试用情况在运行日志中记录。\",\"WCQK\":\"\",\"ZRBM\":\"燃运部\",\"BZ\":\"\"}"   tData   "]}}";
}  
 
             
             
             
			 
                                        
                                     
                                                                     
                                                                    


 
                                                                     
                                                                     
            
Thomas850 (作者)
Danny哥,你才是哥。
3.1肯定是不行的,3.2我也让人试,应该也是没成功(我后来没关注),基本能排除你的猜测。
今天有大发现,我更清楚问题在哪里了:
不是json太长,图片放json里都可以,其实是因为json结构复杂,包含的小对象一多就出问题。而且不管json对象是不是多次序列化过,都会有这问题。
所以我们采用了一个让你吐血的办法绕过:加一个参数,服务端接口检测到这个新参数就对返回的json串再进行base64编码(可以兼容老app哦),这样除了数据量大点,其它就没问题了。
我们怀疑:ios下的webview预处理疑似json串的ajax返回时会占爆某种资源,导致一定机率的失败,而且是近几月的webview才有的。
哈哈哈大笑三声,手机打了这么多,我真服了自己
2016-07-13 21:28