我有表格:
new Ext.form.FormPanel({
bodyStyle:'padding: 10px',
width:400,
renderTo: Ext.query(".foo")[0],
id: 'login-form',
bodyStyle: 'padding:15px;',
url:'1.php',
items: [
{ xtype: 'textfield',
fieldLabel: 'Login',
name: 'login'
},
{
xtype: 'textfield',
name: 'pass',
fieldLabel: 'Password',
inputType: 'password'
}],
buttons: [{
text: 'Login',
handler: function()
{ Ext.getCmp('login-form')
.getForm()
.submit();
}}]
});
错误:
未捕获您正在尝试解码无效的JSON字符串:
* 注意:未定义的索引:在线传递C:\ xampp \ htdocs \ extjs \ 1.php *
为什么未定义?
{
xtype: 'textfield',
name: 'pass', // имя поля <input name=«pass»
fieldLabel: 'Password',
inputType: 'password' // Не просто textfield, а password
}
名: '通过'
我的php文件:
$pass = $_GET["pass"];
$json = '{"a":pass}';
echo json_decode($json);
答案 0 :(得分:2)
错误消息说明了PHP中未定义的索引。默认情况下,使用POST请求发送Ext表单,因此您的代码应为:
$pass = $_POST['pass'];
如果你不知道使用什么HTTP方法(嘘,这很糟糕!),你甚至可以使用$_REQUEST
代替。
此外,正如另一个答案所述,你的PHP的其余部分都是混乱的......你真正想做的是(看,我使用武力!):
echo json_encode(array('a' => $pass));
最后回答您的原始问题,您的javascript错误消息是您在Ext无法解码JSON响应时获得的错误消息。知道快速识别问题的来源是很好的。
答案 1 :(得分:1)
您的问题与ExtJS无关,而与PHP的JSON输出有关:
$pass = $_GET["pass"];
$json = '{"a":pass}';
echo json_decode($json);
可能应该是:
$pass = $_GET["pass"];
$json = '{"a": "' . $pass . '"}';
echo $json;
我假设pass
是一个字符串而我没有消毒它。此外,您不想在PHP端进行解码,您只需要将已经编码的JSON转储到输出以供ExtJS使用。