在数据库中,' 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; ?>" />
现在是页面加载时的大垃圾输出:
显然,在我的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函数......奇怪,任何想法?
答案 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时解析它。