2015-04-22 2 views
0

Как я могу отправить имя пользователя/пароль как Raw JSON через form.submit().Post Raw Json via .submit()

loginForm.submit({ 
    url: 'localhost/login', 
    method: 'post', 
    jsonData: loginForm.getValues() 
... 
    success: ... 

даже Ext.JSON.encode(loginForm.getValues()) сервер получает в качестве имени пользователя = тест & пароля = тест, который я должен быть { «имя»: «тест», «пароль»: «тест»}

ответ

1

Вы должны, вероятно, попробовать что-то вроде

Ext.Ajax.request({ 
    method: 'POST', 
    url: 'submit.php', 
    params : { 
     data: Ext.encode(loginForm.getValues()) 
    }, 
    success: function() { 
    }, 
    failure: function() { 
    } 
}); 

Source for reference

+0

Да это может работать, но так как есть плохой дизайн апи, который я не имею к ним доступ, я должен размещать именно так, как { «имя пользователя»:» тест», "пароль": "тест"}. добавление данных: {"username": "test", "password": "test"} не работает. – flakerimi

+1

Я вижу, вы посмотрели на этот другой [пост] (http://stackoverflow.com/questions/2917581/how-to-post-json-data-with-extjs)? – Scriptable

+0

Да, я искал все, что может найти Google, это публикация как параметры, закодированные в форме url, имя пользователя = test & password = test, вызывающее ошибку 500 на сервере. Я смог опубликовать JSON с клиентом php и chrome rest. – flakerimi

0

Когда форма отправлена, она я не представлены в формате JSON. Чтобы отправить строку JSON, необходимо использовать Ext.Ajax.request. http://www.sencha.com/forum/showthread.php?132082-jsonData-in-submit-action-of-form

Я просто должен был изменить

loginForm.submit({}) 

в

Ext.Ajax.request({}) 

и использовать

params: Ext.JSON.encode(loginForm.getValues()),

Bad DOCS.

+0

Я думаю, что документы довольно обширны. Один из самых обширных онлайн-документов для любых фреймворков. Да, некоторые варианты реализации и дизайна не упоминаются, но это нам нужно применить. – Yellen

1

Как это часто бывает с ExtJS, есть простой ответ. В конфигурации в LoginForm:

Ext.create('Ext.form.Panel', { 
    title: 'Simple Form', 

    // The form will submit an AJAX request to this URL when submitted 
    url: 'save-form.php', 

    .... (blah blah blah) 

    jsonSubmit: true // <---- set this to TRUE 
}); 

Установите свойство jsonSubmit: true.

Затем, когда вы используете loginForm.submit(), ваш объект будет представлен как JSON, а не как параметры формы.

Вот ссылка на форму документации: http://docs.sencha.com/extjs/4.2.3/#!/api/Ext.form.Panel