2012-08-06 48 views
2

我需要一個跨域用戶登錄請求實例,請幫幫我,謝謝! 我的代碼煎茶touch2登錄例子

Ext.data.JsonP.request({ 
     url: 'http://25.30.2.3:8080/newvbo/applyaction!longin', 
     params: { 
      username:'13881901678', 
      password:'111111', 
     }, 
     success: function(response, opts) {  
      alert('1');  
    }, 
    failure: function(response, opts) { 
      alert('2');  
    } 
}); 

我的問題是,我沒有收到服務器返回的值,我錯誤?

+0

您正在使用什麼後臺? – Madman 2012-08-06 09:52:24

+0

我想也許你的服務器響應不是jsonp,請檢查回調參數。響應應該是這樣的your_callback_key({'data':'hello'}) – Hardy 2013-05-07 19:49:01

回答

0

嗨@jesse你可以嘗試跨域這樣的事情,

Ext.Ajax.request({ 
     url: 'your_url_path', 
     timeout: 90000, 
     params: { 
      withCredentials: true, 
      useDefaultXhrHeader: false, 
      username:'13881901678', 
      password:'111111', 
     }, 
     success: function(response, o) { 
      if(response != '') { 
        alert('1') 
      } 
     }, 
     failure: function(response, o) { 
      alert('2') 
     } 
}) 

對於跨域你需要把withCredentials: trueuseDefaultXhrHeader: false

我希望能幫到你。

+0

感謝您的幫助,現在的問題是在chrome調試中,Uncaught SyntaxError出現:意外令牌: 請參閱Java調試中的返回代碼:{「jsonArray」:null,「jsonMap」:null,「jsonReturn」:「true」} 最後我做錯了嗎? – jesse 2012-08-07 02:50:00

+0

也許吧,但你的回答是'null'你能告訴我你是怎麼做的嗎? :) – hekomobile 2012-08-07 03:49:03

3

你可以試試這個

Ext.Ajax.request({ 
method:'GET', 
contentType:'application/json; charset=utf-8', 
dataType:'json', 
url:'http://........Login', 
disableCaching: false, 
withCredentials: true, 
useDefaultXhrHeader: false, 
callbackKey: 'callback', 

params: { 
     EmailId:Ext.getCmp('usernametwoway').getValue(), 
     Password:Ext.getCmp('loginpasswordtwoway').getValue(), 
     }, 


success:function(response) 
{ 
     console.log(response); 
     var res = response.responseText;  


     var jsonarr = Ext.decode(response.responseText); 
     console.log(jsonarr); 
      var myres = jsonarr[0].Result; 

      console.log(myres); 
     switch(myres) 
      { 

      case '1': 
      console.log("Registration response is successfully"); 

      Ext.Viewport.setActiveItem({xtype:'passengerdetailstwoway'}); 

      break; 

      case '0': 
       console.log("Failed"); 
       Ext.Msg.alert("Error","Login Failed",Ext.emptyFn); 
       break; 

根據您可以指定交換機情況下,性反應..

0

我想建議你採用不同的方法,因爲發送的登錄憑據GET參數到遠程服務器通過HTTP不是一個好主意,而應該通過HTTPS使用POST方法。現在你會認爲JSONP不支持POST,所以我該如何做到這一點,但是如果你打算在手機或iPad上安裝你的應用程序,它會在不使用JsonP的情況下從瀏覽器進行遠程調用,這意味着你可以使用普通的AJAX代理做你想做的。檢查了這一點:

How to use json proxy to access remote services during development

這意味着這應該工作:

var obj = new Object(); 
obj.userId = username; 
obj.password = password; 
var data = Ext.JSON.encode(obj); 

Ext.Ajax.request({ 
    url : 'https://login_url', 
    method : "POST", 
    headers: { 
     'Content-Type': 'application/json' 
    }, 
    params : data, 
    useDefaultXhrHeader : false, 
    withCredentials: true, 
    success : function(response) { 

    }, 
    failure : function(response) { 

    } 
});