【问题标题】:window.location.href not working after ajax successajax成功后window.location.href不工作
【发布时间】:2019-11-28 08:57:57
【问题描述】:

在这段代码中,我使用razorpay支付网关API,支付成功但无法在成功调用ajax后重定向。那么,如何在订单页面中使用window.location.href 重定向页面?请帮帮我。

$(document).ready(function() {
  $('#buy_now').click(function(e) {
    var total_amount = $(".total_amount").val();
    var product_id = $(".product_id").map(function() {
      return this.id;
    }).get().join(",");
    var new_uid = $("#new_uid").val();
    var user_id = $("#uid").val();
    var user_email = $(".user_email").attr("id");
    var options = {
      "key": "************************",
      "amount": (1 * 100), // 2000 paise = INR 20
      "name": "MyApp",
      "description": "Payment",
      "image": "https://www.MyApp.com/img/logo/logo.png",
      "handler": function(response) {
        $.ajax({
          url: '<?php echo base_url() ?>razorPaySuccess',
          type: 'post',
          dataType: 'json',
          data: {
            "razorpay_payment_id": response.razorpay_payment_id,
            "total_amount": total_amount,
            "product_id": product_id,
            "new_uid": new_uid,
            "user_email": user_email,
            "user_id": user_id
          },
          success: function(data) {
            window.location.href = "<?php echo base_url(); ?>order";
          }
        });
      },
      "theme": {
        "color": "#528FF0"
      }
    };
    var rzp1 = new Razorpay(options);
    rzp1.open();
    e.preventDefault();
  });
});

【问题讨论】:

  • 执行重定向的行看起来很好,这可能意味着 AJAX 请求不起作用,您需要调试它,而不是重定向。
  • 我建议将 failed() 添加到您的 ajax 请求中,甚至添加到 error 中,看看它为什么从 api 失败。在此处阅读有关 jquery ajax 的更多信息api.jquery.com/jquery.ajax

标签: javascript php jquery codeigniter razorpay


【解决方案1】:

将您的网址存储在一个变量中,然后调用此行。

var url = "your current url";
$(location).attr('href',url);

【讨论】:

  • 你能进一步解释一下吗?为什么有人需要一个额外的变量呢?仅此一项有帮助吗,还是第二行使其起作用?
  • 第二行也是单独工作 $(location).attr('href',"google.com"); 你应该输入你想要的完整url。
【解决方案2】:
window.location.href = window.location.href; it may work for you.

【讨论】:

  • 虽然此代码可能会解决问题,但 including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请edit您的答案添加解释,并说明适用的限制和假设。
【解决方案3】:

这样做:-

var path = "<?php echo base_url(); ?>";
window.location.href = path+"order";

【讨论】:

  • 请在您的答案中添加一些解释 - 为什么要首先将 URL 添加到变量中解决问题?
  • 就像我们在 jquery 中使用 php 代码一样,所以最好将该值存储到变量中,以便我们以后访问它,也可以根据我们的使用更好地检查或操作它。并且直接将 php 代码访问到 jquery 将不允许自定义。这是我的想法,但如果我错了,你可以告诉我。
  • 但是你能分辨出原始代码和你的代码之间的区别吗?有没有重要的,因为我看不到任何
  • 不,没有太大区别,但我只是分配给变量,其他更改取决于用户可以获得的 api 响应,然后基于必须进行更改。
  • 好的,那么使用你的答案并不能解决问题?
【解决方案4】:

到目前为止,我没有注意到您的代码有任何错误。您只需确保它转到success: function() 并使用window.location.replace 而不是window.location.href。因此它将替换当前的 url 并将您重定向到您的成功页面。

window.location.replace = "<?php echo base_url(); ?>order";

如果上面的代码仍然不起作用。您的 e.preventDefault() 可能会导致您阻止重定向到您的成功页面,因此请确保相应地使用它。

【讨论】:

    猜你喜欢
    • 2014-08-02
    • 2012-05-20
    • 2013-08-20
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 2021-05-12
    相关资源
    最近更新 更多