奇妙な質問文句は残念です。すべての正直なところで、私はここの深いところにいます。一度に大量のことを学ばなくてはなりません。AJAX、MVC、JQueryを使用した非同期データベース検索
私はデータベースでAJAXを使用して非同期検索を実行する方法を理解しようとしていますが、 "500内部サーバーエラー"が発生しています。私はいくつかのAJAXチュートリアルを行ってきましたが、どれもWeb開発のMVCメソッドを含んでいません。私はどこに、どのように情報を送る必要があるのか、少し失われています。
私が知っているのは、500 Server Errorは、クライアント側ではなくサーバ側で起こっていることを意味しています。コントローラが関与し始める時点でロジックが壊れていると推測します。それはちょうど初心者の推測です。
私は、関連するコードと思われるものをすべて貼り付けます。文脈については、データベース情報は私が練習のために取り組んできたモック銀行データベースの 'accounts'テーブルからのものです。
ありがとうございました。
はまず、ここでは今ここに関与コードだ
クローム
Javascriptを/ jQueryの:
var $j = jQuery.noConflict();
var key = 0;
$j(function() {
$j("#search_btn").click(function() {
key = $j("#acc-id-search").val();
searchAcc();
return false;
})
});
function searchAcc() {
var callback = function (data) {
$j("#account_data_table").empty();
var htmlArray = [];
if (data.total > 0) {
$j.each(data.items, function (i, item) {
htmlArray.push("<tr>");
htmlArray.push('<td class="text-center">' + item.account_id + '</td>');
htmlArray.push('<td class="text-center">' + item.product_id + '</td>');
htmlArray.push('<td class="text-center">' + item.cust_id + '</td>');
htmlArray.push('<td class="text-center">' + item.open_date + '</td>');
htmlArray.push('<td class="text-center">' + item.close_date + '</td>');
htmlArray.push('<td class="text-center">' + item.last_activity_date + '</td>');
htmlArray.push('<td class="text-center">' + item.status + '</td>');
htmlArray.push('<td class="text-center">' + item.open_branch_id + '</td>');
htmlArray.push('<td class="text-center">' + item.open_emp_id + '</td>');
htmlArray.push('<td class="text-center">' + item.avail_balance + '</td>');
htmlArray.push('<td class="text-center">' + item.pending_balance + '</td>');
htmlArray.push("</tr>");
});
}
else {
htmlArray.push('<tr><td colspan="10">No results!</td></tr>');
}
$j("#account_data_table").append(htmlArray.join(''));
alert("Sucess?");
};
alert("Searching for '" + key + "'");
postData('@Url.Content("~/Accounts/Index")', key, callback, '#account_data_table');
}
function postData(url, data, callback, lockObj, dataType, loadingMessage)
{
data = data || {};
dataType = dataType || 'json';
loadingMessage = loadingMessage || 'Loading...';;
var isLock = !!lockObj;
$.ajax({
url: url,
data: data,
method: 'post',
dataType: dataType,
cache: false,
beforeSend: function(){
alert("About to send");
},
success: callback,
error: function(){
alert("Failed..!");
},
complete: function(){
}
});
}
コントローラ 'Url.Content( "〜/アカウント/インデックス")@' ポイントへ:
[HttpPost]
public NewtonJsonResult Index(int key)
{
var _service = new BankEntities();
var searchCondition = new account() { account_id = key };
var resultObj = new AjaxDataResult();
var allitems = _service.All(searchCondition);
var itemArray = new JArray();
resultObj.total = allitems.Count();
JObject temp;
foreach(var item in allitems)
{
temp = new JObject();
temp["account_id"] = item.account_id;
temp["product_cd"] = item.product_cd;
temp["cust_id"] = item.cust_id;
temp["open_date"] = item.open_date;
temp["close_date"] = item.close_date;
temp["last_activity_date"] = item.last_activity_date;
temp["status"] = item.status;
temp["open_branch_id"] = item.open_branch_id;
temp["open_emp_id"] = item.open_emp_id;
temp["avail_balance"] = item.avail_balance;
temp["pending_balance"] = item.pending_balance;
itemArray.Add(temp);
}
resultObj.items = itemArray;
return new NewtonJsonResult(resultObj);
}
'すべて(searchcondition')方法は、テーブル内の必要な項目を見つけるために使用されます:
public List<account> All(account acc)
{
var data = accounts.Where(x => x.status == "ACTIVE");
if(acc.account_id != 0)
{
data = data.Where(x => x.account_id == acc.account_id);
}
return data.OrderBy(x => x.account_id).ToList();
}
は 'dataTypeと削除してください:アヤックスからdataType'を必要とPARAM' key'がコントローラに渡され取得されていないように、思えます。 – User3250
サーバのログを確認してください。サーバのエラーである可能性があります。 –
@ User3250いいえ私は恐れていますが、それと同じ問題です。 「キー」パラメータが送信されていることを確認できる方法はありますか?私はコントローラ側でステップバイステップのデバッグプロセスを実行する方法を理解できません。 –