尝试在sencha 2中使用Ext.Ajax调用从服务器获取响应

时间:2013-02-06 22:48:32

标签: javascript extjs sencha-touch sencha-touch-2

我正在尝试创建一个登录表单,我将用户名和密码发布到服务器,并通过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:

发生了什么事?我究竟做错了什么?我没有正确发布表单值还是什么?

谢谢!

/ newb:)

1 个答案:

答案 0 :(得分:1)

您正在发布两个参数:

  • “用户名”
  • “密码”

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

  • “userName”(注意大写N)
  • “密码”

我想这可能是个问题,虽然我没有看到你在PHP中解码任何东西,所以错误信息有点奇怪。

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