jQuery的$。员额并没有改变看法。我该怎么办?
-
22-09-2019 - |
题
我很新的MVC所以这似乎是一个明显的问题,而是何时发布到我的ActionResult,ActionResult的将被调用,但是视图不会更改。
我在做什么是有一个基本的搜索页面,用户可以在搜索我的数据库,并返回结果和分页。
下面是的JavaScript调用,的ActionResult在我的控制器。
function SubmitSearch() {
var searchBox = document.getElementById('searchBox');
$.post("MyController/SearchResults/",
{
searchString: searchBox.value,
page: 0
});
window.location = "../DriverStudio/Drivers/SearchResults/" + searchBox.value + '/0';
}
我当前的解决方案(这是一个可怕的黑客)是注释掉$。员额(因为我的路线是建立在一种方式在了window.location会调用SearchResutls的ActionResult),并设置window.location的是什么用户搜索,从0开始页。
必须有更好的方法。我应该怎么办?
解决方案
设置您SearchResult所动作返回包含该页面的仅一部分的局部视图进行搜索时被更新。这件作品应该包含在某个容器中,因此很容易更换。然后使用该方法后回调机制与您的SearchResult所操作返回的局部视图结果以替换DIV的内容。从您的处理程序停止默认返回FALSE被取提交操作。
function SubmitSearch() {
var searchBox = $('#searchBox');
$.post("MyController/SearchResults/",
{
searchString: searchBox.val(),
page: 0
}, function(data) {
$('#searchResults').html( data );
});
return false;
}
此假设的一些视图代码看起来是这样的:
<% using (Html.BeginForm()) { %
<label for="searchBox">Search:</label>
<%= Html.TextBox("searchBox") %>
<% } %>
<div id="searchResults">
</div>
其他提示
我不熟悉MVC,但到底是什么你的ActionResult做的比其他重定向用户到URL你有window.location的?
您可能需要实现一个回调,从 jQuery的文档:
jQuery.post( url, data, callback, type )
所以,你传递你想返回的数据做什么URL和数据,但没有。
$.post( "MyController/SearchResults/",
{searchString: searchBox.value,page: 0},
function(result){
//do something with what your actionresult returns here
window.location = result.url;
}
);
不隶属于 StackOverflow