2011-10-30 117 views
0

我使用有一個問題張貼到新澤西以下...發佈與新澤西州和jQuery的

var details = {username: uname, password: pword}; 
$.post('login',function(details){ 
    console.log("sent: "+details); 
}); 

正確的功能在我的登錄頁面正在運行,但兩者usernamepassword爲空。

下面是我如何消費他們...

public void login(@FormParam("username") String uname, 
      @FormParam("password") String pword){ 
     System.out.println("username = " + uname + "password = " + pword); 
    } 

我明白我POST不是一個形式,而是@FormParam是唯一@我可以看到,將適合在這裏。

編輯

好吧,我得馬上下...

的POST正在取得

var details = {'username': username, 'password': password}; 
$.POST('login', details,function(result){ 
    console.log(result); 
},"json"); 

的接收方法

@POST 
public Viewable HeyStaksLogin(LoginInfo loginI){ 
     String uname = loginI.username; 
     String pword = loginI.password; 
     System.out.println("username = "); 
} 

loginInfo

@XmlRootElement 
public class LoginInfo { 
public String username; 
public String password; 
} 

回答

1

的數據被髮送作爲$.post()函數的第二個參數(第一個是url和第三個是成功的回調),如下所示:

var details = { username: username, password: password }; 
$.post('login', details, function(result) { 
    console.log(result); 
}); 
+0

同樣的問題。服務器返回500錯誤。這兩個參數都是空的。 – user596186

+0

@ user596186,它看起來像服務器期望參數被稱爲'username'和'password'而不是'uname'和'pword'。你可以嘗試修改你的請求嗎?'var details = {username:username,password:password};'? –

+0

我現在得到以下回復。 TypeError:對象函數(a,b){返回新的e.fn.init(a,b,h)}沒有方法'POST' – user596186

0

@FormParam在這種情況下不可用,因爲你發佈的是JSON。這裏是你可以做一個例子:)

1加新澤西州json.jar到你的項目的依賴

2)定義以下bean來表示郵件的正文:

@XmlRootElement 
public class LoginInfo { 
    public String username; 
    public String password; 
} 

3)修改登錄方法如下:

public void login(LoginInfo li) { 
    System.out.println("username = " + li.username + "; password = " + li.password); 
} 
+0

仍然沒有解決我的問題。它聲稱'方法未定義' – user596186

+0

好的,我認爲你跳過了代碼段中的註釋,只是爲了保持簡短。當然,您的登錄方法需要使用@POST註釋進行註釋,並且還應該使用@Consumes(「application/json」)進行註釋。您可以返回Response而不是返回void,而返回語句如下所示:'return Response.seeOther(url_you_want_to_redirect_to).build();'。 –

0

嘗試@Consumes(MediaType.APPLICATION_FORM_URLENCODED)標註爲您的服務器端方法