我有一个视图,它会加载几个下拉列表的更改事件的部分内容:
我有一些调用动作的JavaScript:
$("#filterdd").on('change', function () {
var datefrom = $('#fromdt').val().replace("/", "-").replace("/", "-");
var dateto = $('#todt').val().replace("/", "-").replace("/", "-");
$("#partialexpcal").load('/home/experienceCalendarFilter?fromdt=' + datefrom + '&todt=' + dateto);
});
然后返回部分:
public ActionResult experienceCalendarFilter(string fromdt = "", string todt = "")
{
myModel model = new myModel();
model = gd.getstuff(fromdt, todt);
if (Request.IsAjaxRequest())
{
return PartialView("_expcalendar", model);
}
else
{
return View(model);
}
}
<div id="partialexpcal">
@Html.Partial("_expcalendar", Model)
</div>
我正在使用jQuery Datetimepicker,需要在部分加载后触发:
function afterload() {
$(".datefield").datepicker({ dateFormat: "dd/mm/yy", changeYear: true });
$(function () {
$.validator.addMethod('date',
function (value, element) {
if (this.optional(element)) {
return true;
}
var ok = true;
try {
$.datepicker.parseDate('dd/mm/yy', value);
}
catch (err) {
ok = false;
}
return ok;
});
$(".datefield").datepicker({ dateFormat: 'dd/mm/yy', changeYear: true });
});
}
我在父视图和部分视图中尝试了以下所有内容:'expcalfilterdiv'是局部视图中的主要容器:
$('#expcalfilterdiv').ready(function () {
alert("hit1");
afterload()
});
这只会在初始加载时发生,而不是在部分更改之后。
$('#expcalfilterdiv').live(function () {
alert("hit1");
afterload()
});
这根本没有打击。
$('#expcalfilterdiv').livequery(function () {
alert("hit1");
afterload()
});
在我这样做的时候,有没有办法能够抓住Ajax的成功?
答案 0 :(得分:1)
如果您看到$.load()个文档,则会发现此函数会收到3个参数。第三个是complete
,这是一个回调,它将在加载请求完成后运行。即修改加载代码,添加第三个参数,该参数可以是加载完成时将执行的函数定义或现有函数的名称:
$("#partialexpcal")
.load('/home/experienceCalendarFilter?fromdt=' + datefrom + '&todt=' + dateto,
function() { /* */});
或
$("#partialexpcal")
.load('/home/experienceCalendarFilter?fromdt=' + datefrom + '&todt=' + dateto,
functionToInvoke);
注意:在文档中,第二个参数是可选的sith方括号,因此您可以省略它并直接指定第三个
答案 1 :(得分:0)
Load有一个第二个参数,在AJAX调用完成后调用,如下所示。
F#