2012-08-30 65 views
1

我是很新的煎茶觸摸 &開始建立簡單登錄形式。 我的用戶界面已準備就緒,但現在我停留在如何爲登錄請求響應編寫代碼。煎茶觸摸:登錄請求 - 響應

重要的是,我如何指向特定的URL來發出POST/GET請求?如何獲取&解析json數據。

我讀了sench-touch文檔,但我沒有理解,如何使用該模型,商店,代理。 有關如何創建模型,商店,代理以進行簡單登錄的建議非常有幫助。

在此先感謝。

編輯插入圖片:

enter image description here

var loginForm = Ext.create('Ext.form.Panel', { 
    fullscreen: true, 

    items: [{ 
     xtype: 'fieldset', 
     items: [ 
      { 
       xtype: 'textfield', 
       name : 'name', 
       label: 'Username' 
      }, 
      { 
       xtype: 'passwordfield', 
       name : 'password', 
       label: 'Password' 
      } 
     ] 
    }] 
}); 

loginForm.add({ 
       xtype: 'button', 
       text: 'Login', 
       ui: 'confirm', 
       badgeText: '1', 
       // handler: function(){ 
        // // alert("handler invoked"); 
       // }, 

       listeners : { 
       tap : function() { 

       var form = Ext.getCmp('form-id'); 
       var values = form.getValues(); 
       Ext.Ajax.request({ 
         url: 'https://102.XXX.X.XX:XXXX/QuizMasterServer/rest/login', 
         params: values, 

         success: function(response){ 
          var text = response.responseText; 
          Ext.Msg.alert('Success', text); 
        }, 

        failure : function(response) { 
          Ext.Msg.alert('Error','Error while submitting the form'); 
          console.log(response.responseText); 
        } 
       }); 
} 
} 
}); 



loginForm.add({ 
    xtype: 'toolbar', 

    // id:'loginPressed', 

    docked: 'bottom', 
    // layout: { pack: 'center' }, 
    items: [ 
     { 
      xtype: 'button', 
      text: 'Login', 
      ui: 'confirm', 
      // action: 'login', 

      handler: function() { 
       loginForm.setValues({ 
        name: 'vs', 
        password: 'vs' 
       }) 
      } 
     }, 
     { 
      xtype: 'button', 
      text: 'Clear', 
      ui:'decline', 
      handler: function() { 
       loginForm.reset(); 
      } 
     }, 

     { 
      xtype: 'button', 
      centered: true, 
      text: 'Sign Up', 
      handler: function() { 
       alert('New User?'); 
      } 
     }, 
     { 
      xtype: 'container', 
      html: 'New User? ', 
      style: { 
       color: 'yellow', 
      } 
     }, 
    ] 
}); 
+0

辣妹在這裏你的UI – olegtaranenko

+0

我已經添加了圖片 –

+0

請添加javascript代碼 – olegtaranenko

回答

0

你就要成功了!

將您的代碼添加到成功回調。 注意,如果ajax返回ok,則成功()回調(如果觸發),否則失敗()。在這兩種情況下,回調回調()都會觸發。

Ext.Ajax.request({ 
    url: 'https://102.XXX.X.XX:XXXX/QuizMasterServer/rest/login', 
    params: values, 

    success: function(response){ 
     var text = response.responseText; 
     // for example 
     var result = Ext.decode(text); // json parsing 
     if (result.ok) { 
      //create new widget 
      var homeView = Ext.widget('homePage', {...}); 
      Ext.Viewport.remove(formLogin); 
      Ext.Viewport.add(homeView); 
      ///... etc 
      homeView.show() 
     } 
     Ext.Msg.alert('Success', text); 
    }, 

    failure : function(response) { 
     Ext.Msg.alert('Error','Error while submitting the form'); 
     console.log(response.responseText); 
    } 
}); 

聲明。當然,代碼是沒有測試......

歡呼聲中,奧列格

+0

嘿謝謝..我還沒有寫過stmt'**方法:'POST'**'後url stmt ..這個缺少的stmt會影響任何東西嗎? –

+0

如果你的服務器接受POST,它當然會。看看你的服務器配置。您可以使用任何HTTP類型,GET/POST/PUT等。查看http://docs.sencha.com/touch/2-0/#!/api/Ext.Ajax獲取更多信息 – olegtaranenko

+0

我做不建議在登錄時使用模型/代理/商店,但這是可能的。最好從此查詢返回憑據數據。在我的應用程序中,我從服務器獲取會話令牌並將其保存到內部應用程序的變量中。接下來的所有ajax查詢都將包含它作爲參數或cookie。這取決於你的應用程序設計/服務器部分 – olegtaranenko

1

Exemplo山島Ajax請求:使用Ajax請求

例子:

Ext.Ajax.request({ 
     url: domain.com/auth/signIn/', 
     method: 'post', 
     scope: this, 
     params: { 
      email: username, 
      password: password 
     }, 

     success: function (response) { 

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

      if (result.meta.code==200) 
      { 

       /** 
       * Salvando dados do usuário em localStorage 
       * Save user data on localStorage 
       */ 
       window.localStorage.setItem('myID', result.response.id); 
       window.localStorage.setItem('email', result.response.email); 
       window.localStorage.setItem('token', result.response.token); 
       window.localStorage.setItem('fName', result.response.fName); 
       window.localStorage.setItem('lName', result.response.lName); 
       window.localStorage.setItem('photo', result.response.photo); 
       window.localStorage.setItem('gender', result.response.gender); 
       window.localStorage.setItem('relationship', result.response.relationship); 
       window.localStorage.setItem('interest', result.response.interest); 

       this.signInSuccess();      
       this.verifyDeviceToken(result.response.id, 'signin'); 

      } 
      else 
      { 

       this.signInFailure('Error', 'The data reported are invalid'); 

      } 
     }, 

     failure: function (response) { 


     } 
    });