0

我有形式:

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);
4

2 回答 2

2

错误消息说明了一切,PHP 中未定义的索引。默认情况下,Ext 表单使用 POST 请求发送,因此您的代码应为:

$pass = $_POST['pass'];

如果您不知道使用什么 HTTP 方法(嘘,这很糟糕!),您甚至可以使用$_REQUEST

此外,如另一个答案中所述,您的 PHP 的其余部分被打乱了......您真正想要做的是(看,我使用武力!):

echo json_encode(array('a' => $pass));

最后回答您最初的问题,您的 javascript 错误消息是您在 Ext 无法解码 JSON 响应时收到的错误消息。这对于快速识别问题的来源非常有用。

于 2013-08-21T16:51:36.990 回答
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 使用。

于 2013-08-21T16:47:34.083 回答