0

我正在尝试创建一个登录表单,在其中将用户名和密码发布到服务器并获得响应以处理 Ext.Ajax 调用。下面是我的代码:

我的登录表格

Ext.define('GS.view.Main', {
    extend: 'Ext.form.Panel',
    config: {
        fullscreen: true,
        id: 'register',
        frame:true,
        items: [{
            xtype: 'fieldset',
            items: [
                {
                    xtype: 'textfield',
                    name : 'userName',
                    itemId: 'userName',
                    placeHolder : 'Orgnisationsnummer',
                },
                {   
                    xtype: 'passwordfield',
                    name : 'password',
                    itemId: 'password',
                    placeHolder : 'Lösenord'
                }
            ]
        }, {
            xtype: 'button',
            text: 'Logga in',
            minHeight: '45px',
            action: 'submitFormAction'
        }]
    }
});

我的控制器

Ext.define('GS.controller.Controller', {
    extend : 'Ext.app.Controller',    
    config : {   
        control : {
            'button[action="submitFormAction"]' : {
                tap : 'submitForm'
            },
        }
    },
    submitForm : function() {
        var form = Ext.getCmp('register');
        Ext.Ajax.request({
            url : "URL HERE", 
            params : { username : form.getValues().userName, password: form.getValues().password  },
            method: 'POST',
            success: function ( result, request ) {
                console.log(result);
                var jsonData = Ext.decode(result.responseText);
                Ext.Msg.alert('Success', 'Data return from the server: '+ jsonData.msg); 
            },
            failure: function ( result, request) { 
                Ext.Msg.alert('Failed', result.responseText); 
            } 


        });
    }
});

我的简单 PHP 脚本

<?php
$username = $_POST["userName"];
$password = $_POST["password"];



if(!empty($username) && !empty($password)) {
   $response = array("success" => 'true', 'id' => '1');
   echo json_encode($response);

} 

?>

问题是我从服务器得到这个响应:

getAllResponseHeaders: function () {
getResponseHeader: function (header) {
request: Object
requestId: 1
responseText: ""
responseXML: null
status: 200
statusText: "OK"
__proto__: Object

Error: You're trying to decode an invalid JSON String:

到底是怎么回事?我究竟做错了什么?我没有正确发布表单值吗?

谢谢!

/ 新人 :)

4

1 回答 1

1

您正在发布两个参数:

  • “用户名”
  • “密码”

...但是在您的 PHP 脚本中,您正在寻找这两个:

  • “用户名”(注意大写 N)
  • “密码”

我想这可能是问题所在,尽管我没有看到您在 PHP 中解码任何内容,因此错误消息有点奇怪。

我的建议是从 PHP 中回显用户名/密码值,以确保它们被正确发送/接收。您还可以在 JS 代码中设置一些断点,以确保在发送 AJAX 请求之前这些值是正确的。当我不知道您实际发送的值是什么时,很难说一切都很好。

于 2013-02-07T02:56:34.790 回答