0

アンカータグとJavaScriptを介してServletControllerにリダイレクトしようとしています。

現在、IEではなくGoogleChromeで動作します。これまで2日間Webを調べたところ、IEは動的要素ではsetAttributeでうまく機能しないことがわかったため、実際の属性を使用して値を割り当てるように切り替える必要がありました。

アンカーは、動的フォームを作成してフォームを送信し、サーブレットへの新しいリクエストを作成することを想定していますが、何らかの理由でjavascriptでアンカーをクリックしても何も起こりません。ただし、Chromeのアンカーをクリックすると、正しく実行され、問題なく次のページにリダイレクトされます。

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My Account</title>
<meta name="description" content="eTeam Bank">
<meta name="author" content="Abraham Cabrera">
<link rel="stylesheet" type="text/css" href="css/mystyles.css">

<!--[if lt IE 9]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->
<script type="text/javascript"> 
function anchorRedirect(username, user_id, operation) {
"use strict";
var form = document.createElement("form");
form.name="form";
form.id="form";
form.method = "post";
form.action = "ServletController";

var hiddenField1 = document.createElement("input");
hiddenField1.type = "hidden";
hiddenField1.name = "username";
hiddenField1.value = username;
form.appendChild(hiddenField1);

var hiddenField2 = document.createElement("input");
hiddenField2.type = "hidden";
hiddenField2.name = "user_id";
hiddenField2.value = user_id;
form.appendChild(hiddenField2);

var hiddenField3 = document.createElement("input");
hiddenField3.type = "hidden";
hiddenField3.name = "operation";
hiddenField3.value = operation;
form.appendChild(hiddenField3);

form.submit();
}
</script>
</head>
<body>
<header>
    <div id="title">eTeam Bank</div>
</header>

<div id="container">
    <div class="userTitle" >
        <div class="user">
            Welcome: user
        </div>
        <div class="userTime">
        Thu Jan 31 09:24:16 EST 2013
        </div>
    </div>
    <div class="accountBox" >
        <div class="accountSpace"></div>
        <div id="accountAnchor">
        <a href="javascript:anchorRedirect('user', '2', 'loadPersonalInfo');">Personal Info</a> 
        </div>
        <div id="accountAnchor"> 
        <a href="javascript: anchorRedirect('user', '2', 'loadAccountInfo')">Account Info</a> 
        </div>
        <div id="accountAnchor"> 
        <a href="javascript: anchorRedirect('user', '2', 'loadAccountSum')">Account Summary</a> 

        </div>
    </div>
</div>

<footer>
    <div id="footerContent">Abraham Cabrera &copy; 2013</div>
</footer>

追加の詳細:
1。これは、いかなる種類の生産事業または企業向けではなく、個人的な研究のためだけのものです。
2. javaスクリプト関数を使用せずにURLパスを介して変数を直接渡そうとしましたが、モデルクラスを介してユーザーアカウント情報を取得するためにServletControllerに新しいリクエストを行う必要があるため、要件を満たしていません。どちらの操作でも、ビューに転送します。

4

2 に答える 2

1

コードを取得して id='form_div1' で div を追加し、新しく作成したフォームを送信前に追加すると、FireFox と IE から機能し始めることに気付きました。

var my_div = document.getElementById("form_div1");
my_div.appendChild(form);
form.submit();
于 2013-01-31T16:04:04.850 に答える
0

HTML内に(javascript経由ではなく)フォームを作成し、必要なすべてのフィールドをすでに作成することをお勧めします。次に、要素を作成して設定する代わりに、非表示フィールドの値を設定してフォームを送信するだけで、JSを大幅に簡素化できます。何かのようなもの

<form name="myform" id="myform" method="post" action="ServletController">
    <input type="hidden" name="username" value="">
    <input type="hidden" name="user_id" value="">
    <input type="hidden" name="operation" value="">
</form>

のようなJavaScriptで

function anchorRedirect(username, user_id, operation) {
    document.myform.username.value = username;
    document.myform.user_id.value = user_id;
    document.myform.operation.value = operation;
    document.myform.submit();
}
于 2013-01-31T15:35:59.470 に答える