我目前正在尝试使用Ajax.BeginForm帮助程序执行相同的功能,而不是通过输入提交标记执行此操作,而是在大约30秒的设置间隔内执行此操作。
@using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "shipmentTable", OnComplete = "OnSuccess"}))
完美地工作,但似乎无法将其转换为有效的jquery.ajax调用。 post控制器有两个参数,minDate和maxDate。 Raw URL就像Home / Shippments?minDate = arg1& maxDate = arg2。我尝试过各种各样的变化:
setInterval(function () {
$.ajax({
type: 'POST',
url: '/Home/Shipping',
dataType: 'html',
success: OnSuccess
});
}, 30000);
没有运气。只是想看看是否有人可以帮助我。欢呼声。
更新 这似乎工作得很好,只需将控制器中的参数更改为仅接受FormCollection。
setInterval(function () {
$.ajax({
type: 'POST',
data: $('form').serialize(),
url: '/Home/Shipping',
dataType: 'html',
success: OnSuccess
});
}, 30000);
我似乎所有的答案都很有效。
答案 0 :(得分:2)
您正在将字符串传递给success函数。传递函数本身就是这样的:
function OnSuccess(ajaxReturnedData)
{
alert("success");
}
setInterval(function () {
$.ajax({
type: 'POST',
url: '/Home/Shipping',
data : { param1 : "value1", param2: "value2" },
dataType: 'html',
success: OnSuccess
});
}, 30000);
或者将它结合起来:
setInterval(function () {
$.ajax({
type: 'POST',
url: '/Home/Shipping',
data : { param1 : "value1", param2: "value2" },
dataType: 'html',
success: function(ajaxReturnedData){
alert("success");
}
});
}, 30000);
如果你有firebug,你可以看到Ajax调用的状态,它返回什么?任何错误代码或成功?
答案 1 :(得分:2)
您需要serialize()
之类的内容setInterval(function () {
$.ajax({
type: 'POST',
data: $('#formId').serialize(),
url: '/Home/Shipping',
dataType: 'html',
success: OnSuccess
});
}, 30000);
添加minDate
和maxDate
的值。
答案 2 :(得分:1)
尝试:
setInterval(function () {
$.post('/Home/Shipping',$("form").serialize(), function(data){
//success
}), 30000);