JSONを使用して、次の関数を使用して、データベース内のテーブルに含まれる行数を取得しています。
function rowCount()
{
$.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
datatype:"json",
type: "GET",
url: "/wagafashion/ajax/CmsRowCount.htm",
success: function(response)
{
$("#rows").val(response);
},
error: function(e)
{
alert('Error: ' + e);
}
});
}
成功ハンドラーでは、応答は期待どおりに到着しています。サーバー側では問題ありません。
long
応答は、データベーステーブルの行数を表すJavaのタイプにマッピングされます。
この応答を、成功ハンドラーで使用してid
いる隠しフィールドに入れています。rows
$("#rows").val(response);
上記の関数は、次のjQuery関数を使用してフォームが送信されたときに呼び出されます。
$(function() {
$('#dataForm').submit(function() {
rowCount(); //Invokes the above function that makes a JSON request.
var rows=$("#rows").val();
alert("rows = "+rows);
return false;
});
});
アラートボックスは、非表示フィールドに含まれる値(上記のJSON応答)にアラートを送信しようとしますが、初めて空になります。送信ボタンをもう一度押すと(ページを更新せずに)、実際の値を警告します。
また、前の関数を次の関数に置き換えてみました。
$(function() {
$('#dataForm').submit(function() {
rowCount(); //Invokes the first function that makes a JSON request.
var form = $(this),
url = form.attr('action'),
rows = form.find('input[name="rows"]').val();
alert("rows = "+rows);
return false;
});
});
しかし、それも機能しませんでした。なぜこれが起こるのですか?その隠しフィールドの正しい値を先行するjQuery関数に取得する方法は何ですか?