如何使用jquery调用action方法并将搜索字符串传递给action方法

时间:2015-03-09 18:05:55

标签: jquery asp.net-mvc

我需要将搜索字符串传递给操作方法。

查看:

<div>
  <input id="search" type="text" placeholder="Search">
  <div id="submitButton"></div>
</div>
<script type="text/javascript">
$("#submitButton").click(function () {
    var options = {};
    options.url = "/Section/Search";
    options.type = "POST";
    options.data = JSON.stringify({ t: $("#search").val() });
    options.contentType = "application/json";
    options.dataType = "json";
    $.ajax(options);
});
</script>

我需要调用此操作方法并使用搜索字符串。

控制器: 部分/搜索

[HttpGet]
public ActionResult Search(string SearchResults)
{
    using (var db = new LambertonEntities())
    {
        var article = db.News.ToList();
        return View(article);
    }
}

2 个答案:

答案 0 :(得分:2)

由于您拥有ajax POST方法和HttpGet Controller,但仍然无法获取您的代码。

如果您想传递参数并使用POST,您可以像以前一样传递数据参数:

$("#submitButton").click(function () {
    var options = {};
    options.url = "/Section/Search";
    options.type = "POST";
    options.data = { SearchResults: $("#search").val() };
    options.contentType = "application/json";
    options.dataType = "json";
    $.ajax(options);
});

但是如果您想使用GET,我建议您使用$.param()这样的方法:

$("#submitButton").click(function () {
    var options = {};
    options.url = "/Section/Search?" + $.param({ SearchResults: $("#search").val() });
    options.type = "GET";
    options.contentType = "application/json";
    options.dataType = "json";
    $.ajax(options);
});

使用$.param()的最佳优势如果您不需要自己创建url param字符串,无论您的对象有多复杂。

如果您想重定向到此操作,则不应使用ajax。你的Controller方法应该允许GET。

$("#submitButton").click(function () {
    window.location.href = "/Section/Search?" + $.param({ SearchResults: $("#search").val() });
});

这会将您重定向到同一窗口中的搜索页面。

$("#submitButton").click(function () {
    window.open("/Section/Search?" + $.param({ SearchResults: $("#search").val() }));
});

这会将您重定向到新窗口中的搜索页面。 For more info

答案 1 :(得分:0)

试试这个:

JS

$("#submitButton").click(function () {
var options = {};
options.url = "/Section/Search";
options.type = "POST";
options.data = JSON.stringify({ searchResults: $("#search").val() });
options.contentType = "application/json";
options.dataType = "json";
$.ajax(options);

});

服务器

[HttpPost]
public ActionResult Search(string SearchResults)
{
    using (var db = new LambertonEntities())
    {
        var article = db.News.ToList();
        return View(article);
    }
}