を働いていないので、私は、以下の「シンプルな」Ajaxのログイン例でjQueryのAjaxリクエストは、私はGrailsのにかなり新たなんだ、と一般的には、フロントエンド開発
...私と一緒に裸してくださいGrailのコントローラにフォームパラメータを送信するためにJQueryを使用しています。ただし、実際のURLは、ajax呼び出しで設定されたコントローラのURLと一致しません。
HTML:
<div id="loginForm">
<div id="ajaxLoginError">
</div>
<form name="ajaxLoginForm" action="ajaxLogin" id="ajaxLoginForm">
<span class="pic"></span>
<span class="close"></span>
<input type="text" name="username" class="text focus" default="Username"
value="${user?.username}" />
<input type="password" name="password" class="text focus"
default="Password" value="${user?.password}" />
<button type="submit" name="login" id="ajaxLoginBtn">
<span class="button"><span>Login</span> </span>
</button>
<label> <input type="checkbox" class="check" name="remember" />Remember
me</label>
<a href="#">Forgot username or password?</a>
</form>
</div>
Javascriptを:
$('#ajaxLoginBtn').click(function() {
$('#ajaxLoginError').fadeOut();
$.ajax({
url: "${createLink(controller: 'user', action: 'ajaxLogin')}",
type: 'GET',
data: queryString,
dataType: 'json',
success: function(data) {
if (data.isAuthenticated) {
// Display user bar
$('#loginUserBar').slideDown();
}else {
$('#ajaxLoginError').html(data.errorMsg).fadeOut();
}
}
});
});
また、誰もが私のコントローラロジックを確認することができます。 JSONレスポンスを解析する正しい方法ですか?
サーバー:
def ajaxLogin = {
boolean isExists = false
String errorMsg = ""
def foundUser = User.findByEmailAndPassword(params.username, params.password)
if (foundUser) {
isExists = true
}else {
errorMsg = "Login unsuccessful! Either the username, or password entered is incorrect."
}
render(content: 'text/json',
loginResponse(isAuthenticated: isExists, errorMsg: errorMsg));
}
同様に、私は明示的にメインjavascriptのプラグインとしてjQueryのを使用するようにGrailsを強制的に行うために必要なものはありますか?
おかげで、さまざまな質問がたくさんあります -Tom
こんにちはGrooveek、返信用のthx。 URLの問題については... grailsリンクメソッドを使用すると、/ myapp/user/ajaxLoginというURLを作成する必要があります。ただし、Ajax呼び出しが発生すると、実際のURLは/ myapp/ajaxLoginに解決されます。なぜGrailsがパス内のコントローラ名を省略しているのか、私は完全にはわかりません。どんなアイデアや提案も大歓迎です。 – princeTaj
また、queryString変数については、基本的に$( '#ajaxLoginForm')。serialize()を代入した結果です。割り当てをコードスニペットに含めるのを忘れました。申し訳ありません:-o – princeTaj
loginResponse(isAuthenticated:isExists、errorMsg:errorMsg)どのような可変ログイン応答は何ですか? – danielad