我正在开发一个ASP.NET WebForms网站,它使用JQuery从ASP.NET ASHX处理程序中获取一些数据。此数据是用户定义的类的对象数组。以下是Handler的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
using WRG_2._1.WRGCore;
namespace WRG_2._1.Handlers
{
/// <summary>
/// Summary description for ResponseFetcher
/// </summary>
public class ResponseFetcher : IHttpHandler, System.Web.SessionState.IReadOnlySessionState
{
public void ProcessRequest(HttpContext context)
{
List<Topic> comments = new List<Topic>() {
new Topic(){ Title=DateTime.Now.ToString() +":"+ DateTime.Now.Millisecond },
new Topic(){ Title=DateTime.Now.ToString() +":"+ DateTime.Now.Millisecond },
new Topic(){ Title=DateTime.Now.ToString() +":"+ DateTime.Now.Millisecond },
new Topic(){ Title=DateTime.Now.ToString() +":"+ DateTime.Now.Millisecond },
new Topic(){ Title=DateTime.Now.ToString() +":"+ DateTime.Now.Millisecond },
new Topic(){ Title=DateTime.Now.ToString() +":"+ DateTime.Now.Millisecond },
new Topic(){ Title=DateTime.Now.ToString() +":"+ DateTime.Now.Millisecond },
new Topic(){ Title=DateTime.Now.ToString() +":"+ DateTime.Now.Millisecond },
new Topic(){ Title=DateTime.Now.ToString() +":"+ DateTime.Now.Millisecond },
};
JavaScriptSerializer jss = new JavaScriptSerializer();
string sJSON = jss.Serialize(comments);
context.Response.Write(sJSON);
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
我从这样的JQuery Ajax中获取数据:
$(document).ready(function () {
var url = '/Handlers/ResponseFetcher.ashx';
$.ajax({
url: url,
type: "POST",
data:
JSON.stringify({ val1: 2, val2: 3 })
,
dataType: "json",
cache: true,
beforeSend: function () {
now = (new Date()).getTime();
if (localCache.exist(url)) {
tDiff = now - cacheTime;
if (tDiff < 20000) {
loadData(localCache.get(url));
return false;
}
}
return true;
},
complete: function (jqXHR, textStatus) {
localCache.set(url, jqXHR, loadData);
}
});
});
function loadData(data) {
console.log(data);
$(data.responseJSON).each(function (i) {
$('#responsecontainer').html = data.responseJSON[i].Title;
});
}
函数loadData()
正在完美地获取数据。但它没有将它添加到#responsecontainer
div。请帮忙!
请注意,类Topic
也可以包含空变量。
答案 0 :(得分:1)
jQuery的.html是一种方法。您可以通过传递新值作为参数将其用作设置器:
$('#responsecontainer').html(data.responseJSON[i].Title);
但是这将迭代地填充#responsecontainer和data.reponseJSON对象中的每个.Title,每个.Title替换最后一个.Title,所以你只会看到最后一个.Title。您可能想要追加:
$('#responsecontainer').append(data.responseJSON[i].Title);
答案 1 :(得分:1)
以这种方式返回它,你真的在 data 对象上有 responseJSON 属性吗?
根据我以这种方式返回它的经验,我直接在 data 对象上得到了结果:
$(data).each(function (i) {
$('#responsecontainer').append(data[i].Title);
});
答案 2 :(得分:0)
问题在于解析JSON响应。我将loadData()
函数的代码转换为:
function loadData(data) {
var resdata = JSON.parse(data.responseText);
console.log(resdata[0].Title);
$(resdata).each(function (i) {
$('#responsecontainer').append(resdata[i].Title);
});
}
现在它的工作。感谢所有回答我问题的人。你的回答给了我这个暗示。 :)