【问题标题】:Uncaught Error: You're trying to decode an invalid JSON String未捕获的错误:您正在尝试解码无效的 JSON 字符串
【发布时间】:2017-02-02 17:03:11
【问题描述】:

我在使用 Java 存储数据时遇到了 EXT js 代码的问题。 下面是我的代码。谁能帮帮我。

下面是我的 NewCustomersVerify.js 代码:

var myHit = Ext.create('Ext.data.Store',{
    fields:['Id','Name'],
    data:[
        {Id:'0',Name:'No'},
        {Id:'1',Name:'Yes'}
    ]
});
var myRisk = Ext.create('Ext.data.Store',{
    fields:['Id','Name'],
    data:[
        {Id:'0',Name:'Low'},
        {Id:'1',Name:'High'}
    ]
});

Ext.define('Test.test.web.test.view.test.NewCustomersVerify', {
     "xtype": "newCustomersVerify",
     "items": [{
          "xtype": "panel",
          "items": [{
               "xtype": "panel",
               "items": [{
                   "xtype": "displayfield",
                   "fieldLabel": "Name :",
                   "margin": 5,
                   "value": "TEXT",
                   "name": "customerName",
                   "title": "Customer Name",
                   "itemId": "lnajnbi",     "bind": "{customerName}"
              },{
                  "xtype": "displayfield",
                  "fieldLabel": "Nationality :",
                  "margin": 5,
                  "value": "TEXT",
                  "name": "nationality",
                  "title": "Nationality",
                  "itemId": "lnbjnbi",     "bind": "{nationality}"
             },{
                 "xtype": "displayfield",
                 "fieldLabel": "UniqueId No :",
                 "margin": 5,
                 "value": "TEXT",
                 "name": "uniqueIdNo",
                 "title": "UniqueId No",
                 "itemId": "lncjnbi",     "bind": "{uniqueIdNo}"
            },{
                    "xtype": "hiddenfield",
                    "fieldLabel": "HiddenText",
                    "bindable": "contactId",
                    "margin": 5,
                    "name": "contactId",
                    "title": "HiddenText",
                    "itemId": "oidgafi",
                    "bind": "{contactId}"
               },{
                   "xtype": "hiddenfield",
                   "fieldLabel": "HiddenText",
                   "bindable": "screeningId",
                   "margin": 5,
                   "name": "screeningId",
                   "title": "HiddenText",
                   "itemId": "didgafi",
                   "bind": "{screeningId}"
              }],
               "layout": "vbox",
               "autoScroll": true,
               "margin": 5,
               "columnWidth": 0.5,
               "itemId": "cieadni",
               "dockedItems": []
          }, {
              "xtype": "panel",
              "items": [
              {
               "xtype": "combo",
               "fieldLabel": "Was there a verify hit?",
               "name": "screeningHit",
               "margin": 5,
               "bindable": "screeningHit",
               "title": "Was there a verify hit?",
               "columnWidth": 0.5,
               "width": "100",
               "labelAlign": "left",
               "itemId": "kbfmjgi",
               displayField:'Name',
               valueField:'Id',
               queryMode:'local',
               store: myHit,

          }, {
              "xtype": "combo",
              "fieldLabel": "Country Risk (Nationality)",
              "name": "countryRisk",
              "margin": 5,
              "bindable": "countryRisk",
              "title": "Country Risk (Nationality)",
              "columnWidth": 0.5,
              "width": "100",
              "labelAlign": "left",
              "itemId": "kbgajgi",
              displayField:'Name',
              valueField:'Id',
              queryMode:'local',
              store: myRisk
         }, {
             "xtype": "combo",
             "fieldLabel": "Occupation Risk",
             "name": "occupationRisk",
             "margin": 5,
             "bindable": "occupationRisk",
             "title": "Occupation Risk",
             "columnWidth": 0.5,
             "width": "100",
             "labelAlign": "left",
             "itemId": "kbaajgi",
             displayField:'Name',
             valueField:'Id',             
             queryMode:'local',
             store: myRisk
        }, {
                "xtype" : "filefield",
                "fieldLabel": "Upload evidence of verify (Screenshot from the verify portal)",
                "msgTarget" : "side",
                "allowBlank" : "false",
                "buttonOnly" : "true",
                "margin" : 5,
                "name" : "uploadFile",
                buttonConfig : {
                    "text" : "Upload",
                    "icon" : "images/cloud/upload.png",
                },
                listeners : {
                    change :"uploadFile"
                }
            }],
         "layout": "vbox",
         "autoScroll": true,
         "margin": 5,
         "columnWidth": 0.5,         
         "itemId": "nehbeki",
         "dockedItems": []
    }],
          "layout": "column",
          "autoScroll": true,
          "border": true,
          "margin": 5,
          "itemId": "gjihcpi",
          "dockedItems": [{
               "xtype": "toolbar",
               "dock": "bottom",
               "ui": "footer",
               "isToolBar": true,
               "isDockedItem": true,
               "items": [{
                    "xtype": "tbfill",
                    "itemId": "hajhegi"
               }, 
/*               {
                    "xtype": "button",
                    "name": "cancel",
                    "text": "Cancel",
                    "margin": 5,
                    "isResetButton": true,
                    "itemId": "bbkmkmi",
                    "listeners": {
                         "click": "oncancelclick"
                    }
               },*/ 
               {
                    "xtype": "button",
                    "name": "Confirm",
                    "text": "Confirm",
                    "margin": 5,
                    "itemId": "celbgji",
                    "listeners": {
                         "click": "onConfirmclick"
                    }
               }],
               "columnWidth": 0.5,
               "itemId": "lfmepni",
               "dockedItems": []
          }]
     }],
     "border": true,
     "autoScroll": false,
//     "title": "New Customer Verify",
     "margin": 5,
     "itemId": "dinfmki",
     "dockedItems": [],
     "extend": "Ext.form.Panel",
     "listeners": {
          "afterrender": "onafterrender",
          "scope": "controller"
     },
     "requires": ["Test.test.web.test.controller.test.NewCustomersVerifyController", "Test.test.shared.test.viewmodel.test.NewCustomersVerifyViewModel", "Test.test.shared.test.model.test.NewCustomersVerifyModel"],
     "viewModel": "NewCustomersVerifyViewModel",
     "controller": "NewCustomersVerifyController"
});

下面是我在 NewCustomersVerifyContoller.js 上的 onConfirmclick 函数调用按钮

onConfirmclick: function(me, e, eOpts) {
      var jsonData = {};
      jsonData.contactId = this.view.down('#oidgafi').getValue();
      jsonData.screeningId = this.view.down('#didgafi').getValue();
      jsonData.screeningHit = this.view.down('#kbfmjgi').getValue();
      jsonData.countryHit = this.view.down('#kbgajgi').getValue();
      jsonData.occupationHit = this.view.down('#kbaajgi').getValue();
      var scope = this.getView();
        Ext.MessageBox.show({
            msg : 'Saving data...',
            progressText : 'Saving...',
            width : 300,
            wait : true,
            waitConfig : {
                interval : 200
            }
        });
      Ext.Ajax.request({              
           url: 'secure/NewCustomersVerifyServiceWS/respond',
           method: 'POST',
           sender: scope,
           jsonData: jsonData,
           me: me,
           success: function(response, scope) {
                Ext.MessageBox.hide();
                responseData = Ext.JSON.decode(response.responseText);
                Ext.Msg.alert('Server Response', responseData.response.message);
                win = scope.sender.up();
                win.reportViewController.queryCriteria.controller.filterData(win.searchButtonRef);
                win.close();
           },
           failure: function(response, scope) {
                Ext.MessageBox.hide();
                responseData = Ext.JSON.decode(response.responseText);
                Ext.Msg.alert('Server Response', responseData.response.message);
           }
      }, scope);
 }

以下是我在浏览器控制台上遇到的错误。

[E] Ext.JSON.decode():您正在尝试解码无效的 JSON 字符串: Apache Tomcat/8.0.21 - 错误 报告H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} 身体 {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} 乙 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {颜色:黑色;}A.name {颜色:黑色;}.line {高度:1px; 背景颜色:#525D76;边框:无;}

HTTP 状态 400 -

类型状态报告

消息

描述客户端发送的请求是 语法错误。

阿帕奇 Tomcat/8.0.21

【问题讨论】:

  • 您已阅读并理解错误消息您正在尝试解码无效的 JSON 字符串,我猜。请发布通过电线的json。我想您还必须向我们展示 Tomcat 的期望(即如何解析请求/如何在服务器上生成响应)。
  • 嗨,Alex,以下是我的请求 {contactId: "86ACA66B-719E-4C04-9747-804100F64C5A",screeningHit:"1",countryHit:"0",...} contactId:"86ACA66B- 719E-4C04-9747-804100F64C5A"国家命中:"0"职业命中:"0"筛选命中:"1"
  • 正是它所说的,。您可以看到服务器没有发回 JSON,它正在发送错误消息。

标签: json ajax extjs


【解决方案1】:

错误在于 Ajax 成功或失败函数。您正在尝试解码从您的控制器(或中间层服务器)传递的无效 json。您需要在解码任何字符串之前控制响应。 只需在 Ext.decode() 之前添加控制台日志。并在此处发布回复。这将解决您的问题。

【讨论】:

  • 以下是我的请求 {contactId: "86ACA66B-719E-4C04-9747-804100F64C5A", screenshotHit: "1", countryHit: "0",...} contactId : "86ACA66B-719E-4C04 -9747-804100F64C5A" countryHit : "0" 职业Hit : "0" 筛选Hit : "1"
  • 嗨,Sanket,您能否将信息分享为代码。我是 EXT 和 Ajax 的新手。不知道如何控制台响应确切的代码和哪一行。
  • @Arun 将console.log(response.responseText); 放在Ext.decode 行之前
  • @Sanket 我在日志中遇到了同样的错误 客户端发送的请求在语法上不正确。。我之前在帖子中提到过
  • @Arun 注释掉所有成功和失败函数的代码,包括 Ext.decode()。然后将控制台放入您的代码中,然后您就可以对其进行调试了。
【解决方案2】:

感谢您的支持。

我已将变量 occupationRisk 声明为 **occupationHit **。 就是这个问题……现在解决了。

【讨论】:

    猜你喜欢
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-22
    • 2018-06-20
    • 1970-01-01
    相关资源
    最近更新 更多