gpt4 book ai didi

asp.net-mvc - jQuery.Load() 不触发 ASP.NET MVC2 中的 Request.IsAjaxRequest

转载 作者:行者123 更新时间:2023-12-03 22:40:00 25 4
gpt4 key购买 nike

我正在使用 Jquery 完整日历插件,并且我希望能够单击一个事件并将该事件的详细信息通过 AJAX 填充到 ID 为 #details 的 div 中。

这是我正在尝试加载的 Controller 操作。调试时,该操作不会将传入请求视为 AJAX,并返回完整 View 而不是部分 View 。完整 View 与部分 View 的调用方式相同有什么关系吗? IE; “详细信息.aspx”和“详细信息.ascx”?

public ActionResult Details(int id)
{
Pol_Event pol_Event = eventRepo.GetEvent(id);
ViewData["EventTypes"] = et.GetEventType(id);
if (pol_Event == null)
return View("NotFound");
else
{
if(HttpContext.Request.IsAjaxRequest()){
return PartialView("Details");
}
else
return View(pol_Event);

}
}

这是我正在使用的 jquery 代码。我是否错过了在 eventClick 函数中未正确使用 .load() 的情况?日历插件的开发者已确认 eventClick 与 AJAX 无关,因此故障肯定出在我的代码中。

$(document).ready(function() {
$('#calendar').fullCalendar({

header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},

events: "/Events/CalendarData",
allDayDefault: false,

selectable: true,
eventClick: function(event) {
$('details').load(event.url);
},
eventRender: function(event, element) {
element.qtip({
content: event.title + " @ " + event.venue,

position: {
corner: {
target: 'topLeft',
tooltip: 'bottomLeft'
}
}

});
}


});

});

那么我是否错误地使用了 Jquery.Load() 函数,或者我的 Controller 有问题?

更多更新:我终于发现了问题。正在发送 XMLHttpRequest,但我遇到了 500 内部服务器错误,尚未解决,因为我无法弄清楚导致错误的原因。

Host: localhost:4296
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722
Firefox/3.6.8
Accept: text/html, */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
X-Requested-With: XMLHttpRequest
Referer: http://localhost:4296/Events/EventCalendar
Cookie: .ASPXAUTH=56C5F4FD536564FF684F3F00E9FB51A5F2F1B22D566C517923D71FEAF599D266531CAC52BF49D2700E048DD420A4575456855303CC2DCB5875D4E1AD8883821EA62E5169969503776C78EB3685DAA48C

更新:我终于弄清楚问题出在哪里了。我没有将模型传递给部分,所以该行

return PartialView("Details");

应该是

return PartialView("Details", pol_Event);

这会生成 500 内部服务错误。

最佳答案

当您发出 Ajax 请求时,您应该将“X-Requested-With”HTTP header 设置为“XMLHttpRequest”之类的内容。

Host                www.google.com
User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; (snip...)
Accept */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
X-Requested-With XMLHttpRequest
Referer http://www.google.com

此“X-Requested-With” header 是“IsAjaxRequest()”方法所查找的内容。通常,jQuery 的 Ajax 方法会自动发送此 header 。我的猜测是,由于某种原因,jQuery 日历插件没有发送此 header 。

我会下载类似 fiddler 的内容,或安装Firebug for Firefox并在 Ajax 请求/日历控件被触发/初始化时检查原始 HTTP 请求/响应数据。查看是否包含 X-Requested-With header 。

关于asp.net-mvc - jQuery.Load() 不触发 ASP.NET MVC2 中的 Request.IsAjaxRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3501513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com