我正在尝试创建一个登录表单,我将用户名和密码发布到服务器,并通过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:)
答案 0 :(得分:1)
您正在发布两个参数:
...但是在你的PHP脚本中,你正在寻找这两个:
我想这可能是个问题,虽然我没有看到你在PHP中解码任何东西,所以错误信息有点奇怪。
我的建议是回显PHP中的用户名/密码值,以确保它们正确发送/接收。您还可以在JS代码中设置一些断点,以确保在发送AJAX请求之前值正确。当我不知道你实际发送的是什么价值时,很难说一切都很好。