如何使用jQuery和JavaScript获取URL的特定部分?

时间:2018-07-17 12:46:25

标签: javascript php jquery html wordpress

我正在通过jQuery AJAX在WordPress中签出订单。成功发布后,WordPress会以success值和url值的结果返回给我。

我想获取此url的特定部分,以便可以将id用作对象。

这是网址的结构:
http://localhost/mywebsite/checkout/order-received/28564?key=wc_order_5b4dbc6b2f459

这是我当前的代码:

j('.my-checkout').on('submit', function(evt) {
  evt.preventDefault();

  var billing_customer_type = j("#billing_customer_type").val();
  // and so on...

  j.ajax({
    type: 'POST',
    url: 'http://localhost/mywebsite/ajax=checkout',
    cache: false,
    data: {
      'billing_customer_type': billing_customer_type,
      // and so on..
    },
    success: function(result) {
      var orderResponseUrl = result.redirect;

      j('.order-response-url').html(orderResponseUrl);
      // http://localhost/mywebsite/checkout/order-received/28564?key=wc_order_5b4dbc6b2f459

      orderResponseUrl.split("/");
      console.log(orderResponseUrl[3]);
    },
    error: function(xhr, status, error) {
      console.log(error);
    },
    complete: function() {}
  });
});

我上面的代码的结果就是字母“ p”。我认为是因为它以http的第一个字母开头,所以我使用了索引[3]

您知道我如何获得url的特定部分,即28564

3 个答案:

答案 0 :(得分:1)

因为当您执行orderResponseUrl.split("/");时,它不会更改orderResponseUrl,所以会创建一个新数组。

var parts = orderResponseUrl.split("/");
console.log(parts);

答案 1 :(得分:1)

如果长度始终相同,则可以使用子字符串功能。

var str = "Hello world!";
var res = str.substring(1, 4);

现在资源包含

console.log(res); // ell

如果您不知道索引,则可以找到类似的内容。

var str = "Hello world, welcome to the universe.";
var n = str.indexOf("welcome");

现在看起来像

console.log(n); // 13

答案 2 :(得分:1)

如果您需要与之交互的URL始终相同,则可以在“ order-received /”部分分割返回的URL(该部分提供了之前和之后的所有内容的数组)。

然后而不是再次在'?'上拆分,这是另一种方法-您可以使用#flexCatalog { width: 100%; height: 600px; display: flex; flex-wrap: wrap; } .section { display: block; position: relative; height: 200px; } #r1s1{ width: calc(100% / 12 * 8); background: url("../images/catalog1.jpg"); } #r1s2{ width: calc(100% / 12 * 4); background: url("../images/catalog2.jpg"); } #r2s1{ width: calc(100% / 12 * 6); background: url("../images/catalog3.jpg"); } #r2s2{ width: calc(100% / 12 * 6); background: url("../images/catalog4.jpg"); } #r3s1{ width: calc(100% / 12 * 3); background: url("../images/catalog5.jpg"); } #r3s2{ width: calc(100% / 12 * 4); background: url("../images/catalog6.jpg") center center; } #r3s3{ width: calc(100% / 12 * 5); background: url("../images/catalog7.jpg"); } #gridText { display: inline-block; position: relative; top:0 90%; margin-left: 10px; background: rgba(255, 255, 255, 0.7); } 获取订单号,因为parseFloat返回所有数值,但不包括第一个数值,因此可以使用非数字字符(“?”)。

parseFloat()