Jquery Ajax转到url的第页
我有这样一个ajax调用:Jquery Ajax转到url的第页,jquery,ajax,Jquery,Ajax,我有这样一个ajax调用: $("#Navbar-Search-Button").click(function (e) { SendToController(); return false; }); function SendToController() { var regNumber = $("#IDValue").val().trim(); $.ajax({ url: '/ControllerName/ActionName',
$("#Navbar-Search-Button").click(function (e) {
SendToController();
return false;
});
function SendToController() {
var regNumber = $("#IDValue").val().trim();
$.ajax({
url: '/ControllerName/ActionName',
data: { 'argument': regNumber },
type: 'GET',
cache: false,
success:function(data) {
$("body").html(data);
$(".dropdown-toggle").dropdown();
document.location = url.val(); // tried this doesn't work
},
error: function () {
$("#Dialog").dialog('open');
}
});
}
现在我知道ajax更新没有页面刷新,但是如果成功,我希望页面是url
参数,而不是调用ajax函数的页面
非常感谢您的帮助。当前,您似乎正在发出AJAX请求,然后立即重新加载页面,这将导致您新加载的内容消失,值得注意。如果您不希望发生这种情况,只需更新内容,而不需要导航 关于导航的信息 设置
window.location.href
属性以在成功块中处理此问题:
success:function(data) {
$("body").html(data);
$(".dropdown-toggle").dropdown();
// This will navigate to your preferred location
window.location.href = url;
},
在不导航的情况下更新URL
如果你想在URL中更新内容而不实际导航,你可以考虑使用一种依赖于更新历史的方法,而不是使用这样的函数导航:
success:function(data) {
$("body").html(data);
$(".dropdown-toggle").dropdown();
// This will navigate to your preferred location
history.pushState({},"Your Title,url);
},
关于直接使用MVC URL的问题
目前,您的URL已经硬编码到给定的位置,这在某些情况下可以工作,但是如果发生任何更改,它会使您的代码变得脆弱
建议将正确的URL(从MVC解析)存储在数据属性中,然后在执行导航时使用它,如下所示:
<!-- HTML -->
<input id="Navbar-Search-Button" type="submit" class="btn btn-default" value="Search" data-url="@Url.Action("Action","Controller")" />
<!-- Javascript -->
$("#Navbar-Search-Button").click(function (e) {
// Resolve your URL here
let url = $(this).data('url');
SendToController(url);
return false;
});
function SendToController(url) {
var regNumber = $("#IDValue").val().trim();
$.ajax({
url: url,
data: { 'argument': regNumber },
type: 'GET',
cache: false,
success:function(data) {
$("body").html(data);
$(".dropdown-toggle").dropdown();
document.location = url;
},
error: function () {
$("#Dialog").dialog('open');
}
});
}
$(“#导航栏搜索按钮”)。单击(功能(e){
//在此处解析您的URL
设url=$(this.data('url');
SendToController(url);
返回false;
});
函数SendToController(url){
var regNumber=$(“#IDValue”).val().trim();
$.ajax({
url:url,
数据:{'argument':regNumber},
键入:“GET”,
cache:false,
成功:功能(数据){
$(“body”).html(数据);
$(“.dropdown切换”).dropdown();
document.location=url;
},
错误:函数(){
$(“#Dialog”).Dialog('open');
}
});
}
window.location.replace(url)
Hi如果您使用的是MVC,那么您可以调用url.Action方法,该方法具有操作和控件名称,并将重定向。此url
参数在哪里?@PatrickMurphy我刚刚尝试过,当我点击page上的提交按钮时http://localhost:57878/Controller1/Index
,我看到了我想要的页面,但url仍然是http://localhost:57878/Controller1/Index
@PatrickMurphy是一个字符串,包含请求发送到的URL。。但我也需要页面转到该url我已经尝试过了,当我点击按钮调用ajax函数时,url栏中的地址不会改变,但页面会改变..尝试使用我在文章后半部分提到的history.pushState()
方法,它应该在不显式导航的情况下更改实际的URL栏。Yashvier回答对我有效:success:function(data){$(“body”).html(data);$(.dropdown toggle”).dropdown();@URL.Action(“ActionName”,“ControllerName”)},
值得注意的是,如果您计划在自己的文件中包含Razor代码,则不应将其直接包含在Javascript中。考虑将URL设置为HTML元素上的数据属性并读取它(即将URL传递给您的函数)。这将是一个更干净的方法。你能在这个html元素的注释线程中发布一个例子吗?像这样<代码>