2013-08-21 33 views
0

我有形式:未捕获你试图解码无效的JSON字符串

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 on line *

为什么没有定义?

{ 
        xtype: 'textfield', 
        name: 'pass',   // имя поля <input name=«pass» 
        fieldLabel: 'Password', 
        inputType: 'password' // Не просто textfield, а password 

       } 

name:'pass'!

我的PHP文件:

$pass = $_GET["pass"]; 
$json = '{"a":pass}'; 
echo json_decode($json); 
+2

如果你用英语评论你的代码,这将大有帮助... – 2013-08-21 16:45:44

+0

加油吧,他的评论对他的问题不会有任何用处...... – rixo

回答

2

错误消息说明了这一切,PHP中未定义的索引。分机形式默认情况下使用POST请求发送,所以你的代码应该是:

$pass = $_POST['pass']; 

如果你不知道是做什么用的HTTP方法(!嘘,这是很糟糕),你甚至可以用$_REQUEST代替。

而且,在对方回答说,你的PHP的其余部分是经过加密的...你真正想要做的是什么(你看,我用了力!):

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

而对于最后回答你原来的问题,你的javascript错误信息是你Ext无法解码JSON响应时得到的。很快就可以知道问题来自哪里。

+0

...这并非总是如此?你可以自己决定是否通过邮件发送表格或获得 –

+0

@JeffShaver你是对的,忘记了“默认”部分。现在修好,谢谢。 – rixo

+0

Thanks !!我很高兴。submit()时如何重定向到1.php? –

1

你的问题是什么都没做ExtJS的更多的是与你的JSON输出PHP:

$pass = $_GET["pass"]; 
$json = '{"a":pass}'; 
echo json_decode($json); 

大概应该是:

$pass = $_GET["pass"]; 
$json = '{"a": "' . $pass . '"}'; 

echo $json; 

我假设pass是一个字符串,我不是在消毒它。你也不想在PHP端进行解码,你只需要转储你已经编码的JSON输出,以供ExtJS使用。

+0

感谢您的帮助。 –

相关问题