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();
                }}]
    });

エラー: Uncaught 無効な 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 側でデコードしたくない場合は、ExtJS が消費する出力に既にエンコードした JSON をダンプしたいだけです。

于 2013-08-21T16:47:34.083 に答える