window.location.href with $(“。confirm”)。click(function(e)不返回完整的url

时间:2015-01-26 20:20:39

标签: javascript jquery

我无法解决以下代码出错的问题。 我的完整网址是http://localhost:4244/Invoice/PayInvoice?invoicenumber=7069,但是var url = window.location.href;只返回http://localhost:4244/

<a Class="btn btn-success btn-sm confirm" href="/Invoice/PayInvoice?invoicenumber=7069">Pay Invoice</a>

有人能发现我做错了吗

<script>
    $(document).ready(function() {
        $(".confirm").click(function (e) {
            var url = window.location.href;     // Returns full URL
            alert(url);
            $("#displayPopUp").show();

            e.preventDefault();

            $(".yesupdate").click(function () {
                $("#displayPopUp").hide();

                window.location = url;
                //$(location).attr('href');
            });
            //if (AcceptPayment()) {
            //    // then redirect to original location
            //    window.location = this.href;
            //}
            //else {
            //    alert("Couldn't do my thing first");
            //}
            //var result = window.confirm("You are about to mark invoice as paid, are you sure?");
            //if (result == false) {
            //    e.preventDefault();
            //}
        });
    });
</script>

我尝试做的是将url的值传递给window.location = url;何时单击.yesupdate

2 个答案:

答案 0 :(得分:3)

如果您尝试导航到所点击的href元素的<a>,则可以使用以下内容在.click()处理程序中检索该地址:

var url = this.href;

您的代码段中的行只是将当前location分配回自身,这只会重新加载页面。

var url = window.location.href;
window.location = url;

您可能还需要从click中移除以前的$(".yesupdate")处理程序,以避免它们从多个.confirm堆叠。

您可以使用namespaces定位某些处理程序。

$('.yesupdate').off('.confirm').on('click.confirm', function (e) {
    // ...
});

答案 1 :(得分:0)

您不应该分配到window.location,而是a read-only instance of a Location object。根据您的浏览器,这可能会或可能不起作用或抛出。

相反,您应该使用您要导航到的网址window.location.assign(url)。您可以使用包含查询字符串和其他部分的完整URL。