开发者社区> 问答> 正文

JSONArray格式的数据,Ajax如何在前台解析??报错

 

这是后台return的数据样式,JSONArray对象。

[{"dataId":"20120116078","dataName":" 人事信息临时表"},{"dataId":"20151124136","dataName":" 调整津补贴"},{"dataId":"20151118134","dataName":" 离退人员调动"},{"dataId":"20130811132","dataName":" 更新标准"},{"dataId":"20150204134","dataName":" 调整基本工资标准"},{"dataId":"20150212136","dataName":" 调整基本工资标准"},{"dataId":"20150212136","dataName":" 增加离退休费"}]

 

=========================================

我在前台页面这样取

<script type="text/javascript">
  window.onload=function(){    
 //加载初始化数据   
   addItems(); 
 }; 
 //加载初始化数据 
function addItems() {
   var ls_url = "<%=request.getContextPath()%>/rs/rswh.do?method=toShow_YWtypeInfo";
         $.ajax({
             url: ls_url,
             type: "get",
             dataType: "json",
             contentType: "application/json",
             traditional: false,
             success: function (data) {
                     var optionstring = "";
                     for (var j = 0; j < data.length; j++) {
                         optionstring += "<option value=\"" + data[j].dataId + "\" >" + data[j].dataName + "</option>";
                     }
                     $("#service_type").html("<option value='请选择'>请选择...</option> "+optionstring);
                 },
             error: function(XMLHttpRequest, textStatus, errorThrown) { 
               alert(XMLHttpRequest.status); 
               alert(XMLHttpRequest.readyState);
               alert(textStatus);
              }
         });         
     };
</script>

 

 

但是会报错,弹出这三个XMLHttpRequest, textStatus, errorThrown,的值分别是200  4  parsererror

这是请求的信息

请帮我看看我这个问题出在哪里了?

展开
收起
爱吃鱼的程序员 2020-06-09 11:58:46 669 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    你这个是直接放到request里面的:<preclass="brush:java;toolbar:true;auto-links:false;">if(method.equals("toShow_YWtypeInfo")){//获取业务类型种类request.setAttribute("data",this.toShow_YWtypeInfo(request));}



    看一下你后台代码<divclass='ref'>

    引用来自“刘万杰”的评论

    看一下你后台代码<divclass='ref'>

    引用来自“刘万杰”的评论

    看一下你后台代码你在后台加入以下以下代码,可能你返回的仅是字符串,所以前端报错:<preclass="brush:java;toolbar:true;auto-links:false;">response.setCharacterEncoding("UTF-8");response.setContentType("application/json;charset=utf-8");



    在ajaxsuccess方法里先alert()下。正常的话用$.each(data,function(idx,item){ }遍历操作(我看你后台返回的就是json格式)。如果是json字符串如'[{"dataId":"20150212136","dataName":"调整基本工资标准"},{"dataId":"20150212136","dataName":"增加离退休费"}]'需要先解析data用vardataObj=eval("("+arr+")");解析在遍历
    <divclass='ref'>

    引用来自“岁月轻狂k”的评论

    在ajaxsuccess方法里先alert()下。正常的话用$.each(data,function(idx,item){ }遍历操作(我看你后台返回的就是json格式)。如果是json字符串如'[{"dataId":"20150212136","dataName":"调整基本工资标准"},{"dataId":"20150212136","dataName":"增加离退休费"}]'需要先解析data用vardataObj=eval("("+arr+")");解析在遍历
    if(method.equals("toShow_YWtypeInfo")){//获取业务类型种类request.setAttribute("data",this.toShow_YWtypeInfo(request));}这有问题,看你后台代码那就时你后台返回的数据有问题呗。用火狐的RESTClient测试下<divclass='ref'>

    引用来自“刘万杰”的评论

    你在后台加入以下以下代码,可能你返回的仅是字符串,所以前端报错:<preclass="brush:java;toolbar:true;auto-links:false;">response.setCharacterEncoding("UTF-8");response.setContentType("application/json;charset=utf-8");



    你的返回类型有问题,看你的response的<spanstyle="color:#545454;font-family:'SegoeUI',Tahoma,sans-serif;font-size:12px;font-weight:bold;line-height:normal;background-color:#FFFFFF;">Content-Type是text/html,而你ajax请求已经注明返回结果是json,所以不会进入回调方法而直接报错。所以检查一下你的服务端,正确的json返是ContentType:application/json;

    1.Content-Type设置为application/json;

    2.返回的时候不要使用GBK,试着改用UTF-8试试;

    3.如果还不行,考虑不要直接返回JSON数组,在外面在包一个对象试试;

    2020-06-09 11:59:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像