当我从Ajax调用输入操作时,为什么我的视图没有呈现?

时间:2015-08-18 06:15:15

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

我有一个Ajax调用,触及我的控制器操作' SearchFromWithin'我想知道为什么视图没有显示出来。我可以进入视图并逐步浏览,但屏幕保持不变。它不会显示新视图。

这是我的代码



var optionsFromWithin = {
     url: '/Home/SearchFromWithin',
     type: "get",
     data: { searchQuery: navbarInput.value, classDate: today, latitude: latitude, longitude: longitude, mapType: mapType }
};
            
$.ajax(optionsFromWithin).done(function (data) {
     // don't do anything here  
});




以下是控制器中的操作。当我到达return语句时,我可以进入"搜索"查看并单步执行它没有明显的错误,但页面永远不会改变我在进行Ajax调用时的状态。

    [HttpGet]
    public ActionResult SearchFromWithin(string searchQuery, DateTime classDate, string latitude, string longitude,
        string mapType, int page = 1)
    {
            // do a bunch of stuff here
            return View("Search", viewModel);
    }

2 个答案:

答案 0 :(得分:4)

这可能是因为您没有更新您的网页吗?通常当你调用ajax时,不要调用部分视图,将其内容用作特定元素的html [例如DIV]?

return PartialView("viewName",Model);

然后当ajax调用完成时

$('#myDiv').html(data);

这就是你要找的东西吗?

答案 1 :(得分:2)

使用ajax调用,您无法浏览其他页面。我们实际上使用Ajax从服务器获取数据,然后使用这些数据更新客户端html。

  1. 在控制器中使用此代码

    return PartialView("viewName",Model);
    
  2. 之后导航页面如下:

     $.ajax(optionsFromWithin).done(function (data) {
     /*pass the data to next page for re use or save somewhere*/
        window.location.href = "/Controller/Action"; 
      });