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

时间:2015-01-26 04:28:09

标签: javascript jquery asp.net-mvc asp.net-mvc-4

我有一个设置两个值(经度/纬度)的javascript函数,并尝试回发到控制器中的action方法。我的操作方法被点击,我逐步执行该函数,然后查看到html视图,但我的页面永远不会被控制器正在调用的新视图刷新。纬度和经度被传递给我的控制器greate,它只是没有刷新视图。有什么理由吗?

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);
    }

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

1 个答案:

答案 0 :(得分:1)

您可以使用已注释掉的表单。为&#39; lat&#39;添加两个HiddenFor助手。和&#39; lon&#39;。运行自动填充,然后使用this approach设置两个隐藏字段的值。

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