【问题标题】:javascript : send actual html code to urljavascript:将实际的 html 代码发送到 url
【发布时间】:2019-10-17 08:48:30
【问题描述】:

我有一个这样的 HTML 代码数组:

array = ['%', '&#85']

我想发送到 URL 为:

url + '%,U' 

但是当我写的时候:

url + array

结果是:

url%,U

有没有办法或函数按原样发送 HTML 代码?

【问题讨论】:

  • 你在哪里有那个代码?为什么要de编码?你是把它放在 HTML 中吗?
  • 这个要求背后的原因是什么?也许还有另一种方法可以解决这个问题
  • 当我在浏览器控制台中编写 url + 数组时,我得到了你所期望的。我认为你需要澄清什么和为什么。为什么不使用 encodeURIComponent()?您是否必须使用该数组的元素?如果是这样,您如何/在哪里获得类似问题的结果?在后端?如果是这样,您如何将其发送到后端;通过 AJAX 还是从表单?你使用纯 JS 还是一些库/框架?给我们完整的测试用例,这样我们就不用花时间猜测了;)

标签: javascript html encode


【解决方案1】:

您可能只需将字符串化数组放入 encodeURIComponent 函数,该函数会处理所有非 URL 保存的特殊字符,然后使用反向函数 decodeURIComponent(或其他语言中的等效函数)来获取原始数据作为字符串返回。 所以你可能应该做的是

encoded = encodeURIComponent(JSON.stringify(array))
decoded = JSON.parse(decodeURIComponent(array))

【讨论】:

    【解决方案2】:
    myArray = ['aaa', 'bbb', 'ccc'];
    var arrStr = encodeURIComponent(JSON.stringify(myArray));
    $('#myLink').attr({ href: '/myLink?array=' + arrStr });
    

    【讨论】:

      【解决方案3】:

      先将array 转换为字符串,然后再将其附加到url

      var array = ['%', '&#85'];
      var url = 'foo.baz';
      
      console.log(url + array.join(','));

      【讨论】:

      • 问题不在于加入数组——隐式转换为字符串已经是.join(",")。问题是编码的字符以某种方式被解码。
      【解决方案4】:

      这会对你有所帮助。

      let array = ['%', '&#85'];
      let url = 'https://jsfiddle.net/';
      console.log(url+array)

      【讨论】:

      • 这与 OP 所做的有什么不同?
      猜你喜欢
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 2018-11-23
      • 1970-01-01
      相关资源
      最近更新 更多