【问题标题】:wordpress JSON.parse syntax errorwordpress JSON.parse 语法错误
【发布时间】:2015-03-03 15:14:02
【问题描述】:

在数据库中,“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));

帖子保存后,在数据库中:

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

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

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

我正在使用相同的 php json_encode 函数...很奇怪,有什么想法吗?

【问题讨论】:

    标签: php json wordpress parsing


    【解决方案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()
    

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

    【讨论】:

    • 我仍然有解析错误,但至少输出要好得多: value="["[\"http:\/\/localhost\/wordpress-gallery\/wp-content \/uploads\/2015\/01\/122.jpg\",\"http:\/\/localhost\/wordpress-gallery\/wp-content\/uploads\/2015\/01\/224.jpg \"]"]" .我不需要decodeURI函数,我要做的就是将每个url字符串放在html图像源标签中......
    • @Frank 重新加载页面,decodeURI 我错了(我误读了文档)。试试新方法。
    • 这应该是直截了当的......看看编辑部分,顺便谢谢
    • @Frank 您设置了div,您没有将其添加为属性。在这种情况下,有引号的事实并不重要。
    • 好的,但是您尝试过您的代码吗?这对我不起作用,你有 jsfiddle 的例子吗?
    猜你喜欢
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 2020-04-13
    • 1970-01-01
    • 2012-09-09
    相关资源
    最近更新 更多