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 在同一页面上加载搜索结果。它会看起来更酷:)
我有一个 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 在同一页面上加载搜索结果。它会看起来更酷:)