wordpress JSON.parse语法错误

时间:2015-01-06 00:51:58

标签: php json wordpress parsing

在数据库中,' imgs_urls'字段:

["http://localhost/wordpress-gallery/wp-content/uploads/2015/01/120.jpg","http://localhost/wordpress-gallery/wp-content/uploads/2015/01/222.jpg"]

PHP:

$images_urls = get_post_meta($user_post, 'imgs_urls', false); //return array
$a = json_encode($images_urls);

<input type="hidden" name="<?php echo $id; ?>urls" id="<?php echo $id; ?>urls" value="<?php echo $a; ?>" />

现在是页面加载时的大垃圾输出:

enter image description here

显然,在我的js之后,当我尝试做错时,我有一个错误:

var images = $.parseJSON($("#"+imgId+"urls").val());

修改

现在,如果我在加载页面时执行的函数中的js开始:

var vv = [];
vv.push('http://localhost/wordpress-gallery/wp-content/uploads/2015/01/118.jpg');   
vv.push('http://localhost/wordpress-gallery/wp-content/uploads/2015/01/118.jpg');
$("#" + imgId + "urls").val(JSON.stringify(vv));

保存帖子后,在DB中:

["http://localhost/wordpress-gallery/wp-content/uploads/2015/01/118.jpg","http://localhost/wordpress-gallery/wp-content/uploads/2015/01/118.jpg"]

完全相同的DB格式,这次没有错误消息:

var images = $.parseJSON($("#"+imgId+"urls").val());

我使用相同的php json_encode函数......奇怪,任何想法?

1 个答案:

答案 0 :(得分:1)

问题是报价。您可以做的一件事是使用JSON的HTML版本:

$a = htmlspecialchars(json_encode($images_urls));

//JavaScript:
var images = $.parseJSON($("<div/>").html($("#"+imgId+"urls").val()).text());

说明:

$("<div/>").html($("#"+imgId+"urls").val()).text()

这是为了摆脱我们从$lt获得的$("#"+imgId+"urls").val()中的HTML实体(即htmlspecialchars)。我们只想在解析JSON时解析它。