Jquery Ajax转到url的第页

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',

我有这样一个ajax调用:

$("#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元素的注释线程中发布一个例子吗?像这样<代码>