我有以下输入 HTML 元素,我已将 json 编码的 php 变量作为值传递。在源代码中它呈现如下:
<input type="hidden" id="js-helper-artist-likes" name="js-helper-artist-likes" value="{"name":[{"id":215,"fbid":"19538277626","stage_name":"311","city":"","state":"","image_path":"http:\/\/graph.facebook.com\/19538277626\/picture?width=720&height=720",
"description":"311 was formed in 1990 in Omaha, Nebraska."},{"id":18,"fbid":"14591271531","stage_name":"Beck","city":"","state":"","image_path":"https:\/\/graph.facebook.com\/14591271531\/picture?width=720&height=720",
"description":""},{"id":47,"fbid":"137029526330648","stage_name":"Disclosure","city":"","state":"","image_path":"https:\/\/graph.facebook.com\/137029526330648\/picture?width=720&height=720","description":""},
{"id":11,"fbid":"152513780224","stage_name":"Arcade Fire","city":"","state":"","image_path":"https:\/\/graph.facebook.com\/152513780224\/picture?width=720&height=720","description":""}]}">
我想用javascript抓取该值,对其进行json_decode,然后将其用作JS中的数组。就像这样:
var artist_likes = $('#js-helper-artist-likes').val();
console.log(artist_likes);
var artist_likes_decoded = $.parseJSON(artist_likes);
console.log(artist_likes_decoded);
但是,当我打印 Artist_likes 时,它只会显示如下:
"{"
在控制台中。
我知道这是因为 JSON 包含破坏解析的引号,但是有没有办法用 JavaScript 提取文字值?
最佳答案
我认为该错误是由于未转义的引号造成的:
value="{"name":
--------^
这里的引用没有被转义。难道不应该是:
value="{\"name\":
这可能就是原因,它被过早地剪切并显示输出为 {
。或者处理此问题的最佳方法是使用单引号:
value='{"name":
还值得注意的是,JSON 值应该使用双引号而不是单引号。因此,请确保在 HTML 中给出单引号,在 JSON 值中给出双引号,并转义在 JSON 值中找到的单引号。
可能的PHP 代码是:
value='<?php echo str_replace("'", "\\'", $jsonStuff); ?>'
关于javascript - 使用 Javascript 从 HTML 输入字段中提取 JSON 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25220348/