我对此非常陌生,并且一直试图解决我的问题,因为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'
}
});
答案 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语句“连接到数据库成功”。