gpt4 book ai didi

javascript - 如何在sencha touch 2中调用Web服务?

转载 作者:行者123 更新时间:2023-12-03 12:45:24 25 4
gpt4 key购买 nike

我是sencha touch 2的初学者,我需要调用webservice。web服务的代码是:

public function loginAction()
{
$request = $this->getRequest();
$username = $request->request->get('username');
$password= $request->request->get('password');

$success=false;
$token="error";
$error="test";

$userManager = $this->get('fos_user.user_manager');
$user = $userManager->findUserBy(array('username' => $username));

if (! $user)
{

$token="username not exists";
$success=false;
}
else
{

$password_user=$user->getPassword();

$factory = $this->get('security.encoder_factory');
$encoder = $factory->getEncoder($user);
$password = $encoder->encodePassword($password, $user->getSalt());


if ($password!=$password_user)
{
$token="password incorrect";
$success=false;
}


else
{
$token="logged";
$success=true;


}


}


$info= array("token" => $token);

$res=array("success"=> $success);

$res = array("status"=> $res,
"resultat"=>$info
);

$serializer = $this->get('jms_serializer');
$response = $serializer->serialize($res,'json');

return new Response($response);

}

我在项目 sencha 中创建了一个 View :Login.js 和一个 Controller :Login.js。问题在于调用 Web 服务和 Controller Login.js 中的代码:

Ext.define('Sample.controller.Login', {
extend: 'Ext.app.Controller',
config: {
refs: {
loginView: 'loginview',
mainMenuView: 'mainmenuview'
},
control: {
loginView: {
signInCommand: 'onSignInCommand'
},
mainMenuView: {
onSignOffCommand: 'onSignOffCommand'
}
}
},

// Session token

sessionToken: null,

// Transitions
getSlideLeftTransition: function () {
return { type: 'slide', direction: 'left' };
},

getSlideRightTransition: function () {
return { type: 'slide', direction: 'right' };
},

onSignInCommand: function (view, username, password) {

console.log('Username: ' + username + '\n' + 'Password: ' + password);

var me = this,
loginView = me.getLoginView();

if (username.length === 0 || password.length === 0) {

loginView.showSignInFailedMessage('Please enter your username and password.');
return;
}

loginView.setMasked({
xtype: 'loadmask',
message: 'Signing In...'
});

Ext.Ajax.request({
url: 'http://localhost/dawinilastversion/web/app_dev.php/api/login',
method: 'post',
params: {
username: username,
password: password
},
success: function (response) {

var loginResponse = Ext.JSON.decode(response.responseText);

if (loginResponse.success === "true") {
// The server will send a token that can be used throughout the app to confirm that the user is authenticated.
me.sessionToken = loginResponse.sessionToken;
me.signInSuccess(); //Just simulating success.
} else {
me.signInFailure(loginResponse.message);
console.log('erreur.');
}
},
failure: function (response) {
me.sessionToken = null;
me.signInFailure('Login failed. Please try again later.');
}
});
},

signInSuccess: function () {
console.log('Signed in.');
var loginView = this.getLoginView();
mainMenuView = this.getMainMenuView();
loginView.setMasked(false);

Ext.Viewport.animateActiveItem(mainMenuView, this.getSlideLeftTransition());
},

singInFailure: function (message) {
var loginView = this.getLoginView();
loginView.showSignInFailedMessage(message);
loginView.setMasked(false);
},

onSignOffCommand: function () {

var me = this;

Ext.Ajax.request({
url: 'http://localhost/dawinilastversion/web/app_dev.php/api/login',
method: 'post',
params: {
sessionToken: me.sessionToken
},
success: function (response) {

// TODO: You need to handle this condition.
},
failure: function (response) {

// TODO: You need to handle this condition.
}
});

Ext.Viewport.animateActiveItem(this.getLoginView(), this.getSlideRightTransition());
}
});

网络服务登录成功:enter image description here enter image description here

最佳答案

您需要更深入地了解 JSON 响应:

if (loginResponse.status.success === true)

并检查 bool true 而不是字符串 true

关于javascript - 如何在sencha touch 2中调用Web服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23362166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com