Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery$.Post不会更改视图。我该怎么办?_Jquery_Asp.net Mvc_View_.post - Fatal编程技术网

jquery$.Post不会更改视图。我该怎么办?

jquery$.Post不会更改视图。我该怎么办?,jquery,asp.net-mvc,view,.post,Jquery,Asp.net Mvc,View,.post,我是MVC新手,所以这似乎是一个显而易见的问题,但当发布到我的ActionResult时,ActionResult会被调用,但视图不会改变 我正在做的是有一个基本的搜索页面,用户可以在其中搜索我的数据库,然后返回结果并分页 下面是在我的控制器中调用ActionResult的javascript function SubmitSearch() { var searchBox = document.getElementById('searchBox'); $.post("

我是MVC新手,所以这似乎是一个显而易见的问题,但当发布到我的ActionResult时,ActionResult会被调用,但视图不会改变

我正在做的是有一个基本的搜索页面,用户可以在其中搜索我的数据库,然后返回结果并分页

下面是在我的控制器中调用ActionResult的javascript

    function SubmitSearch() {

    var searchBox = document.getElementById('searchBox');

    $.post("MyController/SearchResults/",
    {
        searchString: searchBox.value,
        page: 0
    });

    window.location = "../DriverStudio/Drivers/SearchResults/" + searchBox.value + '/0';
}
我目前的解决方案(这是一个可怕的黑客攻击)是注释掉$.post(因为我的路线是以window.location调用SearchResultls ActionResult的方式设置的),并从第0页开始将window.location设置为用户搜索的内容


一定有更好的办法。我该怎么办?

我不太熟悉MVC,但是除了将用户重定向到window.location中的URL,ActionResult还能做什么

您可能需要从以下位置实现回调:

因此,您传递的是URL和数据,但与您希望如何处理返回的数据无关

 $.post( "MyController/SearchResults/", 
         {searchString: searchBox.value,page: 0},
         function(result){
                //do something with what your actionresult returns here
                window.location = result.url;
         }
       );

我不太熟悉MVC,但是除了将用户重定向到window.location中的URL之外,ActionResult做什么呢

您可能需要从以下位置实现回调:

因此,您传递的是URL和数据,但与您希望如何处理返回的数据无关

 $.post( "MyController/SearchResults/", 
         {searchString: searchBox.value,page: 0},
         function(result){
                //do something with what your actionresult returns here
                window.location = result.url;
         }
       );

设置SearchResults操作以返回部分视图,该视图仅包含执行搜索时要更新的页面部分。该部件应装在容器中,以便于更换。然后使用post方法上的回调机制,用SearchResults操作返回的部分视图结果替换该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>

设置SearchResults操作,以返回仅包含执行搜索时要更新的页面部分的局部视图。该部件应装在容器中,以便于更换。然后使用post方法上的回调机制,用SearchResults操作返回的部分视图结果替换该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>

谢谢tvan。它必须是局部视图吗?为什么我不能返回整个视图?@Darcy-这基本上与正常(非AJAX)帖子相同。使用局部视图只发送更新的部分,这是使用AJAX的一个要点。谢谢tvan。它必须是局部视图吗?为什么我不能返回整个视图?@Darcy-这基本上与正常(非AJAX)帖子相同。使用局部视图只发送更新的部分,这是使用AJAX的一个要点。嗯,这看起来像是一张罚单但“result.url”不起作用。如果我提醒'result',我会得到视图(所以DOCTYPE…等等)。我如何从那里获取url?如果你想通过设置url来实现正常的get,为什么要发布AJAX帖子?我想就像tvanfosson描述的那样,将HTML插入到div中。不过,你可能只想提取body标记中的元素。听起来你想要局部视图。我对MVC不太熟悉。我想你需要一个局部视图,否则那些正则表达式解决方案或某种将html解析为xml然后加载节点的方法就是我所能想到的。嗯,这看起来像是一张罚单。”但“result.url”不起作用。如果我提醒'result',我会得到视图(所以DOCTYPE…等等)。我如何从那里获取url?如果你想通过设置url来实现正常的get,为什么要发布AJAX帖子?我想就像tvanfosson描述的那样,将HTML插入到div中。不过,你可能只想提取body标记中的元素。听起来你想要局部视图。我对MVC不太熟悉。我想你需要一个局部视图,否则那些正则表达式解决方案或某种解析html为xml的方法,然后加载节点就是我所能想到的。