我正在使用Jquery ajax方法从视图中调用控制器。控制器操作方法被成功调用,它从数据库中检索数据并在相应的视图中显示数据,但最后该视图未生成其显示相同视图的视图。
这是我调用动作方法的Jquery代码。
const t = fullname.replace(/[^a-zA-Z- ]/g, '')
if(t) { /* do the rest */ } else return ''
它调用了此操作方法。
<script type="text/javascript">
$(document).ready(function () {
$('#btn_Search').click(function (e) {
var category = $("#ddl_Category option:selected").text();
var location = $('#txtSource').val();
$.ajax({
url: "/Classified/GlobalSearch",
type: 'GET',
data: { searchcategory: category, Location: location },
success: function (data) {
alert("Hi");
},
});
});
});
</script>
最后,数据也在全局搜索视图中设置。但是,观点并没有到来。
为检查通话是否成功,我发出了一条喜讯:
有人可以建议我需要更改什么吗?
答案 0 :(得分:0)
尝试一下:
$.ajax({
url: "/Classified/GlobalSearch",
type: 'GET',
data: { searchcategory: category, Location: location },
success: function (data) {
alert("Hi");
window.location.href = "/page/xyz"; // Try this line after alert.
},
});
答案 1 :(得分:0)
正如前面提到的@HereticMonkey一样,AJAX回调旨在通过加载部分视图而保留在同一页面中。如果要从客户端脚本重定向到另一个页面,则必须使用分配有预期URL字符串的location.href
,而完全不使用AJAX:
$(document).ready(function () {
$('#btn_Search').click(function (e) {
var category = $("#ddl_Category option:selected").text();
var location = $('#txtSource').val();
window.location.href = '@Url.Action("GlobalSearch", "Classified")' + '?searchcategory=' + category + '&Location=' + location;
});
});
另一种重定向的方法是使用标准格式的提交(使用POST
方法)和使用RedirectToAction
包含来自服务器端变量的路由参数:
// POST controller action example
string category = "somecategory";
string location = "somelocation";
return RedirectToAction("GlobalSearch", "Classified", new { searchcategory = category, Location = location });
但是,如果要使用AJAX在同一页面上加载部分视图,只需将return View()
替换为return PartialView()
:
public ActionResult GlobalSearch(string searchcategory, string Location)
{
//Connect to db and fetch data in form of List
return PartialView(list);
}
然后使用html()
函数将部分视图内容显示到目标HTML元素中:
$('#btn_Search').click(function (e) {
var category = $("#ddl_Category option:selected").text();
var location = $('#txtSource').val();
$.ajax({
url: "/Classified/GlobalSearch",
type: 'GET',
data: { searchcategory: category, Location: location },
success: function (data) {
alert("Hi");
$('#targetElement').html(data); // show partial view content to target element
},
// other stuff
});
});