Почему мой Ext.form.FormPanel публикует нулевые значения? - PullRequest
0 голосов
/ 09 августа 2011

В моем приложении у меня есть FormPanel, который должен публиковаться в моем веб-сервисе.

У меня есть FormPanel, расположенная следующим образом.

var config = {
    // Url for the Web Service - Note that the WebServiceURL MUST end with a trailing "/"
    WebServiceUrl: 'http://webservice.example.com/'
};

function WebService(controller, action) {
    return(config.WebServiceUrl + controller + '/' + action);
};

rpc.views.Contact.CommunicateCard = new Ext.form.FormPanel({
    items: [{
        xtype: 'fieldset',
        id: 'loginFormSet',
        title: '',
        items: [
            {
                xtype: 'emailfield',
                placeHolder: 'Username',
                name: 'Username',
                id: 'Username',
                required: true
            }, {
                xtype: 'passwordfield',
                placeHolder: 'Password',
                name: 'Password',
                required: true
            }, {
                xtype: 'checkboxfield',
                id: 'RememberMe',
                name: 'RememberMe',
                label: 'Save login?',
                labelWidth: '40%'
            },
            {
                xtype: 'button',
                text: 'Login',
                ui: 'confirm',
                style: 'margin:2%;',
                handler: function() {
                    doLogin();
                }
            }
        ]
    }]
});


var doLogin = function () {
    Ext.Ajax.request({
        url: WebService('GetInTouch', 'CommunicateCard'),
        method: 'post',
        params: { UserName: rpc.views.Contact.CommunicateCard.getValues().Username, Password: rpc.views.Contact.CommunicateCard.getValues().Password, RememberMe: Ext.getCmp('RememberMe').isChecked() }
    });
};

Проблема в том, что когда я нажимаю "отправить" и смотрю сообщение в Fiddler / Charles , я не вижу никаких значений формы.Кроме того, когда мой веб-сервис получает запрос, он также не получает значения формы.

Вот HTTP-ответ Чарльза

OPTIONS / GetInTouch / CommunicateCard HTTP/1.1
Хост: webservice.example.com
Ссылка: http://192.168.5.206/ Метод контроля доступа-запроса: POST
Источник: http://192.168.5.206
Агент пользователя: Mozilla / 5.0(Macintosh; Intel Mac OS X 10_7_0) AppleWebKit / 534.24 (KHTML, как Gecko) Chrome / 11.0.696.71 Safari / 534.24
Access-Control-Request-Headers: X-Requested-With, Content-Type
Принять: /
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US, en; q = 0,8
Accept-Charset: ISO-8859-1, utf-8; q = 0,7, *; q = 0,3

Я пытаюсь взять некоторые из моих указаний отсюда
http://mhelpdesk.com/simple-login-form-using-asp-net-mvc-and-sencha-touch/


согласно ответу Chrixian, я также попробовал следующий код с теми же результатами.

rpc.views.Contact.CommunicateCard = new Ext.form.FormPanel({
    items: [{
        xtype: 'fieldset',
        id: 'loginFormSet',
        title: '',
        items: [
            {
                xtype: 'emailfield',
                placeHolder: 'Username',
                name: 'Username',
                id: 'Username',
                required: true
            }, {
                xtype: 'passwordfield',
                placeHolder: 'Password',
                name: 'Password',
                required: true
            }, {
                xtype: 'checkboxfield',
                id: 'RememberMe',
                name: 'RememberMe',
                label: 'Save login?',
                labelWidth: '40%'
            },
            {
                xtype: 'button',
                text: 'Login',
                ui: 'confirm',
                style: 'margin:2%;'
            }
        ],
        submit: {
            url: WebService('GetInTouch', 'CommunicateCard'),
            waitMsg: 'submitting',
            success: function(form, response, responseText) {  },
            failure: function(form, response, responseText) {  } 
        }
    }]
});

1 Ответ

1 голос
/ 09 августа 2011

HTTP-запрос, который вы вставили, не POST'ing, он говорит "OPTIONS" для метода HTTP.

Я не вижу ничего синтаксического, что неправильно с вашей FormPanel, и функция doLogin действительно отправит 3 части информации, которую вы определяете в параметрах ... Я не знаю, что вы возвращаете для URL в WebService('GetInTouch', 'CommunicateCard'), так как вы не опубликовали эту функцию.

Кроме того, хотя в использовании Ext.Ajax для отправки формы нет ничего плохого, formpanel предоставляет ярлык для Ext.Ajax для достижения той же цели ...

rpc.views.Contact.CommunicateCard.submit({
   url: 'someurl',
   waitMsg: 'submitting',
   success: function(form, response, responseText) { ... },
   failure: function(form, response, responseText) { ... }
});

Так что вы можете позволить ему выполнять тяжелую работу по добавлению предметов в должность и т. Д.

...