我试图通过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, \'"\') );
// ...
},
// ...