ajax post 调用不刷新我在 mvc 中的控制器视图

ajax post call not refreshing my controller view in mvc

我有一个 javascript 函数,它设置两个值 (longitude/latitude) 并尝试 post 返回到我在控制器中的操作方法。我的操作方法被命中,我单步执行该函数,然后进入 html 视图,但我的页面从未使用控制器调用的新视图进行刷新。纬度和经度正在传递到我的控制器,只是没有刷新视图。有什么原因吗?

function editLocation() {

    var place = autocomplete.getPlace();
    var name = place.name;
    var lat = place.geometry.location.lat();
    var lon = place.geometry.location.lng();
    //alert("This function is working!");
    //alert(place.name);
   //alert(place.address_components[0].long_name);
    var requestData = {
        lati: lat,
        longi: lon
    };

    $.ajax({
        url: '/Home/Results',
        type: 'POST',
        data: requestData,
        dataType: 'json'
    });
}

这是我已部分注释掉的原始 get 调用的表单。

 @*@using (Html.BeginForm("Results", "Home", FormMethod.Get))
{*@
    <p>
        <input type="text" name="location" id="location" placeholder="Search For Classes" />
    </p>
    <p>
        <input class="btn btn-primary btn-lg" value='Submit' type="submit" onclick="editLocation();" />
    </p>
@*}*@

这是我的控制器。

 public ActionResult Results(string location, string lati, string longi)
    {
        var repo = new YogaSpaceRepository();

            /// 1000 Ocean Ave
            DbGeography myLocation = DbGeography.FromText("POINT(-122.453164 37.723057)");
            IQueryable<YogaSpace> spaces = repo.AllWithinDistance(myLocation);


        return View(spaces);
    }

问题 - 在我的表单中使用隐藏变量将 longitude/latitude 数据传递到我的控制器会更容易吗?似乎是这样,但不确定这是否是建议的做法。

您可以使用您注释掉的表格。为 'lat' 和 'lon' 添加两个 HiddenFor 助手。 运行 自动完成,然后使用 this approach.

设置两个隐藏字段的值

在这种情况下使用 ajax 没有意义,如果您只是希望用户搜索一个位置然后被发送到另一个页面。但是,我建议使用 ajax 在同一页面上加载搜索结果。它会看起来更酷:)