現在、テーブルを持つJSPページがあります。右側に私はテーブルの値をバックエンドに動的に渡し、変数をセッションに格納し、この新しいJSPをモーダルボックス(div)内にロードして情報を編集するためのデータ編集ボタンがあります。次に、このモーダルボックスの内部からフォームを送信して、バックエンドSQLデータを更新します。私のJSPページ内で、AJAXを介して別のJSPをページ内のdivに挿入します。
個別のdivをたくさん作成せず、動的に作成したdivを1つだけ使用したいと思っていました。
JSPを使用していて変数クライアント側を渡さない理由は、エントリが特定のユースケースであり、それらがすべてバックフォームからフォームおよびデータをロードする際に事前に設定する必要のあるさまざまなフォームを持つためです。まず
は、私はそれは次に、ここでのAjaxアクション
<action name="editendorsement" class="fcawis.trucking.ajax.EditEndorsement">
<result name="success" type="stream">
<param name="contentType">text/plain</param>
<param name="inputName">inputStream</param>
</result>
</action>
にだ
function editEndorsement(transactiontype, endoid){
$.ajax ({
url: '/fcawis/ajax/editendorsement?endoid='+ endoid ,
action: 'editendorsement',
type: 'POST',
dataType: 'text',
success: function (data) {
$('#modalbox').load('Path/To/TheData.jsp');;
},
error: function(data) {
alert('Error: ' + data[0]); // I Receive error everytime
}
});
console.log("Transtype: " + transactiontype + " " + endoid);
var modal = document.getElementById('modalbox');
var span = document.getElementsByClassName("close")[0];
var div = document.getElementById(transactiontype);
div.style.display="block";
modal.style.display = "block";
span.onclick = function() {
modal.style.display = "none";
div.style.display="none";
}
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
div.style.display="none";
}
}
}
javascript関数に提出します
<form id="editendo" name="editendo" action="editendorsement" method="post">
<input type="hidden" id="endoid" name="endoid" value="<%=endo.getId2()%>" />
<td class="center"><a href="javascript:editEndorsement('<%=endo.getTransactionType()%>', '<%=endo.getId()%>')"><img src="/img/i/edit.png" class="actionicon" </a></td>
</form>
そして、AJAXを経由してフォームを送信するStrutsアクションを作成します
これはバックエンドコードに行きます
public String execute() throws Exception
{
request = getServletRequest();
session = getSession();
HttpSession httpSession = request.getSession();
String endoId = (String) request.getParameter("endoid");
httpSession.setAttribute("editid", endoId);
String str = "Successfully Through Action";
stream = new ByteArrayInputStream(str.getBytes(StandardCharsets.UTF_8));
return SUCCESS;
}
public InputStream getStream() {
return stream;
}
その後、私はそれを数回実行し、デバッガ、それは正常にセッション変数などを設定しますが、JSPページをロードすることができません。私は500の内部サーバーエラーを取得します。これはサーバー側の問題です。うまくいけば、私は十分な情報を与え、質問に答えて詳細を提供し、ちょっとした洞察を探しています。
通常、500エラーは、問題の診断に役立つサーバー側でスタックトレースがあることを意味します。サーバーログには何かがありますか? –
@RomanPuchkovskiy返信いただきありがとうございます、私はバックエンドからスタックトレースを取得しません、それは正常にデバッガを介してトレースして行くが、これはGoogle Chromeのコンソールから来ています。 AJAXスタックトレースを印刷できますか? "POST http:// localhost/fcawis/ajax/editendorsement?endoid = 20618 500(内部サーバーエラー)" – ThePirateBae
@RomanPuchkovskiy 0:0:0:0:0:0:1 - - [12/2017:12:14:31 -0700 "POST/fcawis/ajax/editendorsement?endoid = 20620 HTTP/1.1" 500 6516これは私のApacheログファイルの唯一のものです。 :( – ThePirateBae