3

ユーザーがユーザー名とパスワードを入力してログインできる基本的なモバイル ログイン ページが ColdFusion にあります。ログインに成功すると、ページは cflocation を使用してホームページにリダイレクトされます。ただし、ページはホームページに正常にリダイレクトされますが、ログイン ページの URL がロケーション バーに表示されます。Web アプリケーション全体で cflocation を何度も使用してきましたが、これまでこの動作に遭遇したことがなく、何が原因なのかわかりません。

ページコードの要点:

<cfparam name="invalidLogin" default="false">
<cfif cgi.REQUEST_METHOD EQ "POST" AND isDefined("form.email") AND isDefined("form.password") and len(trim(form.email)) and len(trim(form.password))>
    <!--- call the login method --->
    <cfinvoke component="login" method="userlogin" returnvariable="userData">
        <cfinvokeargument name="userName" value="#form.email#">
        <cfinvokeargument name="password" value="#form.password#">
    </cfinvoke>

    <cfif userData.isLoggedIn>
        <cflocation url="index.cfm" addtoken="no">
    </cfif>
    <cfset invalidLogin = true />
</cfif>

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Log In</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="css/jquery.mobile.structure-1.3.2.css" rel="stylesheet" type="text/css" />
        <link href="css/jquery.mobile-1.3.2.css" rel="stylesheet" type="text/css" />
        <link href="css/common.css" rel="stylesheet" type="text/css" />
        <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
        <script type="text/javascript" src="js/jquery.mobile-1.3.2.js"></script>
        <script type="text/javascript" src="js/common.js"></script>
    </head>
    <body>
        <div data-role="page" class="bg-color">
            <div class="container">
                <div data-role="content">
                    <div class="article">
                        <div class="logoDiv">
                            <img src="img/companyLogo.png" />
                        </div>
                    </div>

                    <form action="" method="post" name="frmLogin" id="frmLogin" class="margin-top" data-transition="slide">
                        <div>
                            <input type="text" name="email" id="email" placeholder="Username">
                            <input type="password" name="password" id="password" placeholder="Password">
                        </div>
                        <cfif invalidLogin><div>Invalid Login</div></cfif>
                        <div>
                            <input type="submit" value="Log In" data-theme="b" />   
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </body>
</html>
4

1 に答える 1

2

jQuery Mobile がAjax 経由のリダイレクトでフォームを処理しないようにするには、Ajax ナビゲーションをオフにして、HTTP 経由でリクエストを処理する必要があります。

これを行うには、data-ajax="false"属性をformタグに追加します。これにより、フォームでのみAjax ナビゲーションが停止します。

Ajax がオフになっているため、現在のフォーム ページから新しいページに移動するとトランジションが失われるため、効果がないことに注意data-transition="slide"してください。

<form action="" data-ajax="false" method="post" name="frmLogin" id="frmLogin">
于 2014-01-16T09:11:25.840 に答える