[英]Unable to run javascript using Ext.Ajax in Sencha-Touch2?
[英]Trying to get response from server with Ext.Ajax call in sencha 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:
到底是怎么回事? 我究竟做錯了什么? 我是否沒有正確發布表單值?
謝謝!
/ thenewb :)
您正在發布兩個參數:
...但是在您的PHP腳本中,您正在尋找以下兩個:
我想可能是問題所在,盡管我看不到您用PHP解碼任何內容,因此錯誤消息有點奇怪。
我的建議是從PHP回顯用戶名/密碼值,以確保正確發送/接收它們。 您還可以在JS代碼中設置一些斷點,以確保在發送AJAX請求之前值正確。 當我不知道您實際發送的是什么值時,很難說一切都很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.