【问题标题】:How to decode url from ajax response?如何从ajax响应中解码url?
【发布时间】:2019-07-14 19:35:58
【问题描述】:

token.php 里面我有这个代码:

$url = file_get_contents($urlPost);
preg_match('/\"amplem\":"(.*)\",/', $url, $matches);
echo $matches[1];

这个echo $matches[1] 会打印出这样一个网址:

https://example.com/?id\u003dg596c2f91a67e518\u0026itag\u003d18\u0026source\u003dtest.

index.php我做一个ajax调用:

$.ajax({
  type:'post',
  url:siteURL+'/token.php',
  data:{token:token},
  success:function(data){
    var i = decodeURIComponent(data);
    console.log(i);
  }
})

console.log(i)的当前结果:

https://example.com/?id\u003dg596c2f91a67e518\u0026itag\u003d18\u0026source\u003dtest.

console.log(i) 的期望结果:

https://example.com/?id=g596c2f91a67e518&itag=18&source=test.

编辑 - 如果我将编码后的 url 直接放在 decodeURIComponent(); 中,我会得到想要的结果,但它不适用于从 ajax 调用返回的 url。

【问题讨论】:

    标签: javascript jquery html ecmascript-6 webpage


    【解决方案1】:

    unescapeJSON.stringify 一起使用:

    var i = "https://example.com/?id\u003dg596c2f91a67e518\u0026itag\u003d18\u0026source\u003dtest";
    
    console.log(unescape(JSON.stringify(i)));

    【讨论】:

    • 当我将 url 直接放在 var i = 上时它可以工作,但是当我做 var i = data 时它不起作用
    • 那么data 是什么?
    • data 是多少? console.log(data) 显示什么?
    • console.log(i);一样,用你的代码我得到了双反斜杠https://example.com/?id\\u003dg596c2f91a67e518\\u0026itag\u003d18\\u0026source\\u003dtest
    • 那么如果i data,为什么console.log(i)console.log(data) 显示不同的响应?
    猜你喜欢
    • 1970-01-01
    • 2020-08-19
    • 2011-09-26
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多