だから私はAJAXでいくつかのデータを取得することに取り組んでいます。すべて正常に機能しているように見えますが、実際には自分のページのデータを取得していません。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
function getMailDetail(mailId) {
$.ajax({
type: "GET",
url: "GetMail.ashx",
data: "mid=" + mailId,
success: function (data) {
console.log(data);
var pnlMail = $('#<%= pnlMail.ClientID %>');
var lblFrom = $('#<%= lblFrom.ClientID %>');
var lblDate = $('#<%= lblDate.ClientID %>');
var lblSubject = $('#<%= lblSubject.ClientID %>');
var lblMessage = $('#<%= lblMessage.ClientID %>');
lblFrom.text(data.From);
lblDate.text(data.Date);
lblSubject.text(data.Subject);
lblMessage.text(data.Message);
pnlMail.css("display", "block");
}
});
}
</script>
data
その値を確認するためにログに記録しました。これは私の最初の試みであるため、何を期待できるか正確にはわかりませんが、名前と値のペアを取り戻す必要があると思います。現在、コンソールはまったく何もログに記録していません。まったく価値がありません。
これが私のHttpHandlerです:
public void ProcessRequest(HttpContext context)
{
string mailid = context.Request.QueryString["mid"].ToString();
context.Response.ContentType = "text/json";
context.Response.Write(showMailDetail(mailid));
}
protected string showMailDetail(string id)
{
int mailid = int.Parse(id);
string From = "";
DateTime Date = DateTime.Now;
string Subject = "";
string Message = "";
MySqlContext db = new MySqlContext();
string sql = "select m.datesent, m.subject, m.message, u.firstname, u.lastname from mail m inner join users u on m.sender = u.userid where m.mailid = @id";
List<MySqlParameter> args = new List<MySqlParameter>();
args.Add(new MySqlParameter() { ParameterName = "@id", MySqlDbType = MySqlDbType.Int32, Value = mailid });
MySqlDataReader dr = db.getReader(sql, args);
if (dr.HasRows)
{
dr.Read();
From = (string)dr["firstname"] + " " + (string)dr["lastname"];
Date = dr.GetDateTime("datesent");
Subject = (string)dr["subject"];
Message = (string)dr["message"];
}
dr.Close();
string result = "{ 'From' : " + From + ", 'Date' : " + Date.ToString("yyyy/MM/dd HH:mm:ss") + ", 'Subject' : " + Subject + ", 'Message' : " + Message + " }";
return result;
}
誰かが私がここで何も得られない理由を理解するのを手伝ってもらえますか?私はこれを間違っている可能性に完全に備えています...
http://www.codeproject.com/Articles/170882/jQuery-AJAX-and-HttpHandlers-in-ASP-NETの記事に基づいてコードを作成しました
編集
SQLで間違った列名を使用していたことがわかりました-そうではm.sender
ないはずm.senderid
です...しかし、今は別の問題があります。
ハンドラーをトリガーすると、Chromeのコンソールに次のように表示されます。
GET GetMail.ashx?mid = 1 500(内部サーバーエラー)jquery.min.js:2
編集2
ハンドラーのコードのより多くの間違いを修正し、どこにもエラーが表示されなくなりましたが、クリックが実際に何かをトリガーしているようには見えません...
ここでどのように進めるかわからない...