html()函数问题

时间:2018-06-22 15:03:48

标签: javascript jquery

我正在尝试使用jQuery解析JSON,但是我有一些问题。我想获取JSON链接。

const data = $.html(function(){
  const entities = Entities.decode((this).toString());
  const obj = JSON.parse(entities);
  return {
    url: obj.url
  }
}).get();
console.log(data)

结果:

  

$。html(...)。get不是函数

我正在尝试解析的代码:

{"url": "http://download2018.com/ap/_com.GloftGGHM_2018-05-25.apk?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=IFVYHACUO60QSGWW9L9Z%2F20180622%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20180622T145015Z&X-Amz-Expires=2400&X-Amz-SignedHeaders=host&X-Amz-Signature=4bcec8896510ede49eb7150d684274fcefb47c036c82e852a316125b1fbdd742", "resp": "success"}

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您遇到的问题是由JSON已经HTML编码的事实引起的。要将其解析回一个对象,您首先需要对其进行HTML解码,您可以使用jQuery的html()text()方法来做到这一点,就像这样:

var htmlEncodedJSON = "{"url": "http://download2018.com/ap/_com.GloftGGHM_2018-05-25.apk?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=IFVYHACUO60QSGWW9L9Z%2F20180622%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20180622T145015Z&X-Amz-Expires=2400&X-Amz-SignedHeaders=host&X-Amz-Signature=4bcec8896510ede49eb7150d684274fcefb47c036c82e852a316125b1fbdd742", "resp": "success"}";

var $el = $('<div />').html(htmlEncodedJSON);
var obj = JSON.parse($el.text())

console.log(obj.resp); // individual property 
console.log(obj); // full object
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

请注意,这不是理想的解决方案。最好的解决方案是不对从服务器返回的JSON进行HTML编码。