jQuery MiniUI

标题: mini.decode()时报错:json.replace is not a function [打印本页]

作者: hehehaha    时间: 2012-10-22 13:27:22     标题: mini.decode()时报错:json.replace is not a function

  1. //标准方法接口定义
  2.                 function SetData(data) {
  3.       if (data.action == "edit") {
  4.            //跨页面传递的数据对象,克隆后才可以安全使用
  5.           data = mini.clone(data);                        
  6.           $.ajax({
  7.                url: "DocumentManagement/showById.do?id=" +data.id,
  8.                type: "post",
  9.                success: function (text) {                                                                       
  10.                     var o = mini.decode(text);
  11.                     form.setData(o);
  12.                     form.setChanged(false);
  13.                     mini.getbyName("Subject").setValue(o.Subject);
  14.                },
  15.           error: function () {
  16.                alert(jqXHR.responseText);
  17.           }
  18.       });                      
  19.                     }
  20.                 }
复制代码


mini.decode(text);
这个为什么会报一个 json.replace is not a function 的错呢?
我看DEMO上都是这样写的啊,请问如何解决呢!


作者: factory    时间: 2012-10-22 13:53:17

你的var o = mini.decode(text);
里面的text贴下看看
作者: hehehaha    时间: 2012-10-22 15:07:29

factory 发表于 2012-10-22 13:53
你的var o = mini.decode(text);
里面的text贴下看看

[attach]804[/attach]
是不是JSON的格式问题呢?

作者: niko    时间: 2012-10-22 17:04:53

你能否做一个简单的Html示例,能重现此问题的。
否则我们本地无法重现此问题,而且其他客户也没有报告过此问题。
作者: hehehaha    时间: 2012-10-23 10:25:09

niko 发表于 2012-10-22 17:04
你能否做一个简单的Html示例,能重现此问题的。
否则我们本地无法重现此问题,而且其他客户也没有报告过此 ...

辛苦管理员了。代码如下:
  1. <head>
  2.                 <base href="<%=basePath%>">

  3.                 <title>My JSP 'test2.jsp' starting page</title>

  4.                 <meta http-equiv="pragma" content="no-cache">
  5.                 <meta http-equiv="cache-control" content="no-cache">
  6.                 <meta http-equiv="expires" content="0">
  7.                 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  8.                 <meta http-equiv="description" content="This is my page">
  9.                 <title>员工面板</title>
  10.                 <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  11.                 <style type="text/css">
  12. html,body {
  13.         font-size: 12px;
  14.         padding: 0;
  15.         margin: 0;
  16.         border: 0;
  17.         height: 100%;
  18.         overflow: visible;
  19. }
  20. </style>
  21.                 <script type="text/javascript">               
  22.                         var form;
  23.                         $(document).ready(function(){
  24.                                 mini.parse();
  25.                                 form = new mini.Form("form1");
  26.                         });     
  27.                 function SaveData() {
  28.                     var o = form.getData();            
  29.        
  30.                     form.validate();
  31.                     if (form.isValid() == false) return;
  32.        
  33.                     var json = mini.encode([o]);
  34.                     $.ajax({
  35.                         url: "",
  36.                         data: { data: json },
  37.                         cache: false,
  38.                         success: function (text) {
  39.                             CloseWindow("save");
  40.                         },
  41.                         error: function (jqXHR, textStatus, errorThrown) {
  42.                             alert(jqXHR.responseText);
  43.                             CloseWindow();
  44.                         }
  45.                     });
  46.                 }
  47.                 function SetData(data) {
  48.                     if (data.action == "edit") {
  49.                         data = mini.clone(data);
  50.                         $.ajax({
  51.                             url: "DocumentManagement/showById.do?id=" + data.id,
  52.                             type:"post",
  53.                             cache: false,
  54.                             success: function (text) {
  55.                                     mini.decode(text);                                   
  56.                             }
  57.                         });
  58.                     }
  59.                 }       
  60.                 function GetData() {
  61.                     var o = form.getData();
  62.                     return o;
  63.                 }
  64.                 function CloseWindow(action) {            
  65.                     if (action == "close" && form.isChanged()) {
  66.                         if (confirm("数据被修改了,是否先保存?")) {
  67.                             return false;
  68.                         }
  69.                     }
  70.                     if (window.CloseOwnerWindow) return window.CloseOwnerWindow(action);
  71.                     else window.close();            
  72.                 }
  73.                 function onOk(e) {
  74.                     SaveData();
  75.                 }
  76.                 function onCancel(e) {
  77.                     CloseWindow("cancel");
  78.                 }             
  79.             </script>
  80.         </head>

  81.         <body>
  82.                 <form id="form1" method="post">
  83.                         <input name="id" class="mini-hidden" />
  84.                         <div style="padding-left: 11px; padding-bottom: 5px;">
  85.                                 <table style="table-layout: fixed;">
  86.                                         <tr>
  87.                                                 <td style="width: 80px;">
  88.                                                         报告标题:
  89.                                                 </td>
  90.                                                 <td>
  91.                                                         <input name="Subject" class="mini-textbox" required="true"
  92.                                                                 style="width: 300px" />
  93.                                                 </td>
  94.                                         </tr>
  95.                                         <tr>
  96.                                                 <td style="width: 80px;">
  97.                                                         报告摘要:
  98.                                                 </td>
  99.                                                 <td>
  100.                                                         <input name="Message" class="mini-textarea" style="width: 300px;" />
  101.                                                 </td>
  102.                                         </tr>
  103.                                         <tr>
  104.                                                 <td style="width: 80px;">
  105.                                                         发布日期:
  106.                                                 </td>
  107.                                                 <td>
  108.                                                         <input name="pubdate" class="mini-datepicker" required="true"
  109.                                                                 style="width: 150px;" />
  110.                                                 </td>
  111.                                         </tr>
  112.                                         <tr>
  113.                                                 <td style="width: 80px;">
  114.                                                         报告类型:
  115.                                                 </td>
  116.                                                 <td>
  117.                                                         <input id="combo1" class="mini-combobox" textField="text"
  118.                                                                 name="AnnouncementType" valueField="id" style="width: 150px;"
  119.                                                                 url="DocumentManagement/loadType.do" value="1" required="true"
  120.                                                                 allowInput="true" nullItemText="请选择报告类型..." />
  121.                                                 </td>
  122.                                         </tr>
  123.                                         <tr>
  124.                                                 <td style="width: 60px;">
  125.                                                         作者:
  126.                                                 </td>
  127.                                                 <td>
  128.                                                         <input name="Author" class="mini-textbox" required="true"
  129.                                                                 value="济安金信基金评价中心" style="width: 150px;" />
  130.                                                 </td>
  131.                                         </tr>
  132.                                 </table>
  133.                         </div>
  134.                         <div style="text-align: center; padding: 10px;">
  135.                                 <a class="mini-button" onclick="onOk"
  136.                                         style="width: 60px; margin-right: 20px;">确定</a>
  137.                                 <a class="mini-button" onclick="onCancel" style="width: 60px;">取消</a>
  138.                         </div>
  139.                 </form>
  140.         </body>
复制代码



作者: factory    时间: 2012-10-23 10:59:01

hehehaha 发表于 2012-10-23 10:25
辛苦管理员了。代码如下:

拿你的页面测试了,能够正常给form赋值的。
建议你这样做,先确保官方demo的form的赋值正常运行,然后从这个demo上来一点点改造成你需要的页面
作者: hehehaha    时间: 2012-10-23 11:17:13

factory 发表于 2012-10-23 10:59
拿你的页面测试了,能够正常给form赋值的。
建议你这样做,先确保官方demo的form的赋值正常运行,然后从 ...

请问这个JSON要返回什么格式呢?
我后台是这样写的:
  1. @RequestMapping(value = "showById", method = RequestMethod.POST)
  2.         public void showById(HttpServletRequest request, HttpServletResponse response) throws IOException {
  3.                 String id = request.getParameter("id");
  4.                 List<HashMap> list = userDao.selectList("basessm.mapper.document.showById", id);
  5.                 HashMap<String, Object> hm = new HashMap<String, Object>();
  6.                 JSONObject jo = new JSONObject();
  7.                 for (Object obj : list) {
  8.                         hm = (HashMap) obj;
  9.                         jo.accumulate("name", "Subject");
  10.                         jo.accumulate("text", hm.get("Subject"));
  11.                 }
  12.                 response.setCharacterEncoding("UTF-8");
  13.                 response.getWriter().write(jo.toString());
  14.         }
复制代码

作者: factory    时间: 2012-10-23 13:53:16

hehehaha 发表于 2012-10-23 11:17
请问这个JSON要返回什么格式呢?
我后台是这样写的:

我拿的就是你上面给数据:var txt = '{"name":"subject","text":"哈哈"}';
var o = mini.decode(data);
form.setData(o);是可以正常加载到form里面的
作者: hehehaha    时间: 2012-10-23 14:25:00

factory 发表于 2012-10-23 13:53
我拿的就是你上面给数据:var txt = '{"name":"subject","text":"哈哈"}';
var o = mini.decode(data);
...

万分感谢版主为我解答!
我用IE9试了一下,果然OK。
Chrome也没问题。
Firefox下是出不来的:TypeError: json.replace is not a function.
不知道其它人有没有类似问题呢?应该是我写的不太兼容!
谢谢
作者: factory    时间: 2012-10-23 14:34:16

hehehaha 发表于 2012-10-23 14:25
万分感谢版主为我解答!
我用IE9试了一下,果然OK。
Chrome也没问题。

[attach]811[/attach]
我看了下,我的FF是最新的16.0.1版本的,也是可以正常加载的

作者: hehehaha    时间: 2012-10-23 16:51:26

谢谢版主,我想是我程序中还有问题。我处理一下




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2