将JSON编码的HTML从WordPress传递到JavaScript

时间:2011-07-23 作者:Ian Dunn

我试图通过wp\\u localize\\u script()将帖子的内容(可能包含HTML)传递给JavaScript。wp\\u localize\\u script()无法处理多维数组,因此encoding it in JSON and then decoding it with jQuery.

只要您只是文本,并替换" 具有常规" 在你打电话之前$.parseJSON(). 但是,如果您尝试解析包含HTML的帖子,会出现如下错误:,

JSON。分析:应为属性名或“}”http://redacted.local/wp/wp-includes/js/jquery/jquery.js?ver=1.6.1 第16行

因此,我想在尝试解析之前,我需要进行更多的字符串操作,以将更多实体转换回常规字符,但我不想只选择出现错误的几个字符,因为我肯定还有几十个字符可能会丢失。有没有一种全面的或标准的方法来做到这一点?我已经做了很多搜索,找到了任何答案,所以这让我觉得我遗漏了一些明显的东西。

以下是PHP方面:

public function loadResources()
{
    // ... 

    wp_register_script(
        \'bgmp\',
        plugins_url( \'functions.js\', __FILE__ ),
        array( \'googleMapsAPI\', \'jquery\' ),
        self::BGMP_VERSION,
        true
    );

    // ...

    if( !is_admin() && $this->mapShortcodeCalled )
    {
        // ...

        wp_enqueue_script(\'bgmp\');

        $bgmpData = array(
            \'options\'   => $this->getMapOptions(),
            \'markers\'   => $this->getPlacemarks()
        );
        wp_localize_script( \'bgmp\', \'bgmpData\', $bgmpData );
    }

    // ...
}

public function getPlacemarks()
{
    // ...

        foreach( $publishedPlacemarks as $pp )
        {
            // ...

            $placemarks[] = array(
                // ...
                \'details\'   => $pp->post_content,
                // ...
            );
        }

    return json_encode( $placemarks );
}
这里是JavaScript方面

// ...

init : function()
{
    // ...

    bgmpData.markers        = $.parseJSON( bgmpData.markers.replace(/"/g, \'"\') );

    // ...
},

// ...

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

虽然这并不能准确回答您的确切问题,但我同意评论中建议的方法。只需跳过将数据填充到单一维度的尝试,并利用l10n_print_after 改为参数。

看见pass object/JSON to wp_localize_script 在那里问答。

SO网友:Bainternet

placemarks[] = array( 这意味着placemarks 是数组的数组,对吗?

此外,您不需要来回访问实体,只需调用$.parseJSON() 在所有bgmpData 风险值:

var bgmpData_parsed = $.parseJSON( bgmpData);
您可以通过以下方式访问标记bgmpData_parsed.markers

结束

相关推荐

WooThemes PremiumNews主题jQuery与WordPress 3.2冲突

今天早上我更新了我的wp,之后我的站点上的jquery很少出现问题。我正在使用woo主题高级报纸主题。升级后,类别下拉菜单(superfish菜单)停止工作。我在使用lightbox插件制作图像,结果停止了工作。我停用了所有插件并检查了主题,但superfish仍然不起作用,我用最新的主题框架更新了主题框架,但仍然没有效果。有人能帮我吗?我的网站URL是:http://webstutorial.com/and我使用的主题是:http://demo.woothemes.com/?name=premiumne