使用jQuery发布到控制器

使用jQuery发布到控制器,jquery,asp.net-mvc,asp.net-mvc-3,Jquery,Asp.net Mvc,Asp.net Mvc 3,在阅读了一些信息后,我认为这应该有效。JS函数被调用,jQuery动画正在旋转,但动作没有发布到。此外,我希望startDate和endDate可以通过文本输入提供,但目前,即使是硬编码也不起作用。谢谢大家 控制器: public class NewsController : Controller { [HttpPost] public ActionResult Search(string lang, string pageNumber, string startDate, st

在阅读了一些信息后,我认为这应该有效。JS函数被调用,jQuery动画正在旋转,但动作没有发布到。此外,我希望startDate和endDate可以通过文本输入提供,但目前,即使是硬编码也不起作用。谢谢大家

控制器:

public class NewsController : Controller
{
    [HttpPost]
    public ActionResult Search(string lang, string pageNumber, string startDate, string endDate, string search)
    {
    }
}
视图:


确保脚本位于DOM中的锚点之后或包装在文档中。就绪:

这应该是可行的,至少它应该调用您的操作。此操作的作用是什么,是否引发异常或其他问题是另一回事,但至少您应该进入其中并正确分配startDate和endDate参数:

public class NewsController : Controller
{
    [HttpPost]
    public ActionResult Search(string lang, string pageNumber, string startDate, string endDate, string search)
    {
        return Json(new { success = true });
    }
}

$.post将只将请求发布到服务器-它不会自动使用您的视图更新您的页面

您需要包含一个success函数,然后使用该函数将视图插入DOM

e、 g

在jquery中尝试类似的方法

$(function() {
    $('#go_button').click(function () {
        var url = '@Url.Action("Search", "News")';
        $.post(url, { startDate: 'start', endDate: 'end' }, function() {
            $('#result').html(data);
        });
        return false;
    });
});
这将发布到您的操作中,并将返回的视图放在ID为“result”的元素中


如果您不知道要包含的布局,您应该让您的操作返回PartialView。

因此,如果您在控制器操作中放置断点,它将永远不会被调用?当你看着萤火虫时会发生什么?你能看到一个AJAX请求被发送吗?找出Firebug,看看它是否真的试图发布。这样,您就可以知道它是在客户端还是服务器上hopefully@DarinDimitrov很高兴我们在同一个页面:@Dave:现在正在发布,但我不知道如何处理控制器返回的视图。我在下面的答案中发表了一些评论。谢谢你的帮助,越来越近了,谢谢。现在调用了该操作,但是如果我删除了回调函数,它就不会被调用。我的控制器也应该返回一个视图返回视图;现在它不会这么做。有什么建议吗?@Chuchelo,删除回调函数似乎很奇怪。使用FireBug或Chrome Developer工具栏签出,以查看删除回调时是否发送了AJAX请求。如果你想返回一个视图,那就继续吧,但是要确保你有一个成功的回调来对结果做一些有用的事情,比如把它注入到DOM中,否则你的AJAX请求真的没有用。我对所有这些问题感到抱歉,但我是一个新手。那么成功回调函数将把视图插入DOM?如果视图包含全新页面,如何清除当前DOMdocument元素并将视图html插入其中?我这么做是因为不同的按钮会调用不同的操作,否则我会使用@@usinghtml.BeginFormControllerName。非常感谢@Chuchelo,AJAX调用工作不需要成功回调。如果你想在客户端对结果做些什么,你需要一个。在您的情况下,您希望替换整个页面。AJAX对此毫无用处。如果您只想更新视图的一部分,AJAX是合适的。在您的情况下,您应该使用带有多个提交按钮的Html.BeginForm,并且每个提交按钮都有不同的名称。表单将发布到一个控制器操作,在该操作中,您可以测试单击了哪个按钮,并基于它执行不同的处理并返回不同的视图。谢谢,我已经理解了这一点,但是否可以将返回的结果放入文档元素中,以便我可以显示整个视图而不是部分视图。顺便说一句,我正在努力解决的原始问题就在这里,不确定我是否可以要求看一看,但这些问题是从哪里来的。非常感谢你的帮助!
public class NewsController : Controller
{
    [HttpPost]
    public ActionResult Search(string lang, string pageNumber, string startDate, string endDate, string search)
    {
        return Json(new { success = true });
    }
}
$(function() {
    $('#go_button').click(function () {
        var url = '@Url.Action("Search", "News")';
        $.post(url, { startDate: 'start', endDate: 'end' }, function() {
            $('#result').html(data);
        });
        return false;
    });
});