ASP.Net MVC3 Ajax间隔发布

时间:2012-01-24 17:03:32

标签: jquery ajax asp.net-mvc-3

我目前正在尝试使用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);

我似乎所有的答案都很有效。

3 个答案:

答案 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);

添加minDatemaxDate的值。

答案 2 :(得分:1)

尝试:

setInterval(function () {
        $.post('/Home/Shipping',$("form").serialize(), function(data){
  //success
}), 30000);