Ext.JSON.decode():您正在尝试解码无效的JSON字符串

时间:2018-05-09 00:55:21

标签: php json extjs

我对此非常陌生,并且一直试图解决我的问题,因为2周后现在希望你能提供帮助。

似乎我的json输出无效,但我不确定我的问题是来自我的php还是我的extjs脚本。

我有一个组合框,当我点击它时,它应该向我显示一个选择列表。 该列表基本上来自Sql表。

当我在Chrome中检查我的控制台时,我看到了我的输出,看起来很好。

ext-all-rtl-debug.js?_dc=1525825768241:10025 [E] Ext.JSON.decode(): You're trying to decode an invalid JSON String: Connection to DB succeed    
        [{"id":"3","businessunit":"kappa"}] 

我应该看到kappa并且能够选择它但我没有任何东西只是json错误。

这是我的php:

    <?php
    require_once"..//..//_includes/headers.php";


$query = "select id, businessunit from Team_tab order by businessunit";
logit($query);
$result = odbc_exec($connection,$query);
while($row = odbc_fetch_array($result))
    {
    $myArray[] = array(
        'id'=>$row['id'],
        'businessunit'=>$row['businessunit'],
        );


    }

    if (isset($myArray))
    {
        if ( sizeof($myArray) > 0 )
        {
            $output = json_encode($myArray);
            echo $output;
        }
        else
        {
            echo '(success:true,"error":0)';    
        }
    }
    else
        {
            echo '(success:true,"error":0)';
        }

    ?>

继承我的极端:

Ext.define('EmpMen.view.Employee.CreateEmployee', {
        extend: 'Ext.window.Window',
        alias: 'widget.employee.createemployee',

    requires: [
        'EmpMen.view.Employee.CreateEmployeeViewModel',
        'EmpMen.view.Employee.CreateEmployeeViewController',
        'Ext.form.Panel',
        'Ext.form.field.ComboBox',
        'Ext.button.Button'
    ],

    controller: 'employee.createemployee',
    viewModel: {
        type: 'employee.createemployee'
    },
    reference: '',
    height: 325,
    itemId: 'createEmployee',
    width: 364,
    title: 'Enter Employee Information',

    layout: {
        type: 'vbox',
        align: 'stretch'
    },
    items: [
        {
            xtype: 'form',
            flex: 1,
            height: 170,
            padding: 10,
            width: 360,
            bodyPadding: 10,
            title: '',
            items: [
                {
                    xtype: 'textfield',
                    anchor: '100%',
                    reference: 'first',
                    itemId: 'first',
                    fieldLabel: 'First Name'
                },
                {
                    xtype: 'textfield',
                    anchor: '100%',
                    reference: 'last',
                    itemId: 'last',
                    fieldLabel: 'Last Name'
                },
                {
                    xtype: 'textfield',
                    anchor: '100%',
                    reference: 'tle',
                    itemId: 'tle',
                    fieldLabel: 'Title'
                },
                {
                    xtype: 'combobox',
                    anchor: '100%',
                    reference: 'bunit',
                    fieldLabel: 'Business Unit',
                    displayField: 'businessunit',
                    valueField: 'id',
                    bind: {
                        store: '{businessunit}'
                    }
                },
                {
                    xtype: 'textfield',
                    anchor: '100%',
                    reference: 'exp',
                    itemId: 'exp',
                    fieldLabel: 'Experience'
                },
                {
                    xtype: 'container',
                    margin: 10,
                    layout: {
                        type: 'hbox',
                        align: 'stretch',
                        pack: 'center'
                    },
                    items: [
                        {
                            xtype: 'button',
                            flex: 1,
                            reference: 'employeeForm',
                            maxWidth: 100,
                            width: '',
                            text: 'Save',
                            listeners: {
                                click: 'onButtonClick'
                            }
                        }
                    ]
                }
            ]
        }
    ],
    listeners: {
        afterrender: 'onCreateEmployeeAfterRender'
    }

});

1 个答案:

答案 0 :(得分:1)

来源: https://docs.sencha.com/extjs/6.0.2/modern/src/JSON.js.html#Ext.JSON-method-decode

根据发生错误的 Ext.JSON.decode 方法的来源,PHP的响应应该如下:

Connection to DB succeed    
    [{"id":"3","businessunit":"kappa"}]

这不是有效的JSON响应。它应该是:

[{"id":"3","businessunit":"kappa"}]

根据提供的来源,我怀疑“连接数据库成功”的唯一地方应该是附加字符串:

require_once"..//..//_includes/headers.php";

来自headers.php删除echo语句“连接到数据库成功”。