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

次の2つのパラメータをPOSTしています。

  • 「ユーザー名」
  • "パスワード"

...しかし、PHPスクリプトでは、次の2つを探しています。

  • "userName"(大文字のNに注意)
  • "パスワード"

これがおそらく問題だと思いますが、PHPで何もデコードしていないので、エラーメッセージは少し奇妙です。

私のアドバイスは、PHPからのユーザー名/パスワードの値をエコーし​​て、正しく送受信されていることを確認することです。また、JSコードにいくつかのブレークポイントを設定して、AJAXリクエストを送信する前に値が正しいことを確認することもできます。あなたが実際に送信している値がわからない場合、すべてがうまくいくとは言い難いです。

于 2013-02-07T02:56:34.790 に答える