PHP/jQuery UTF 问题
PHP/jQuery UTF issue
各位早安,
今天早上遇到了一个真正令人头疼的问题,我希望你能提供帮助。
我有一个后台切换器插件,在我的 Wordpress 站点外部。它希望以下列格式提供图像:
["http://www.path/to/image.jpg", "http://www.path/to/image2.jpg"]
我正在使用以下函数将字符串从我的站点传递到外部脚本:
<?php
if($page_id == 5) { ?>
<?php
$cat = 62; //category id
$posts = get_posts('showposts=-1&order=ASC&cat='. $cat);
$list = "'";
if ($posts) {
foreach($posts as $post) {
$imgsrc = wp_get_attachment_image_src(get_post_thumbnail_id( $post->ID ), "Full");
$featuredimgpath = $imgsrc[0];
$list .= '"'.$featuredimgpath.'",';
}
}
$list = substr($list, 0, -1);
$list .= "'";
echo "<script charset='utf-8'>var paths=encodeURIComponent($list);</script>";
?>
接收函数是这样处理的...
paths = decodeURIComponent(paths);
if(jQuery().bgswitcher) {
$(".splash").bgswitcher({
images: [paths], // Background images
effect: "fade", // fade, blind, clip, slide, drop, hide
interval: 4000, // Interval of switching
loop: true, // Loop the switching
shuffle: false, // Shuffle the order of an images
duration: 1500, // Effect duration
easing: "linear" // Effect easing
});
}
尽管控制台日志和警报输出以预期格式显示字符串,但所有关联图像的结果都是 404。
我唯一注意到的是接收脚本输出带有 ASCII/UTF-8 个字符的字符串,例如 %22 替换引号。这就是为什么我使用了 encodeURI 功能,但问题仍然存在。
有谁知道我该如何解决这个问题?或者即使我以错误的方式解决问题?
一如既往地提前致谢!
格雷厄姆
更改此行:
echo "<script charset='utf-8'>var paths=encodeURIComponent($list);</script>";
到
echo "<script charset='utf-8'>var paths=$list;</script>";
想通了!我只是使用 PHP 直接将 jQuery 打印到页面 - 这完全消除了跨文件编码问题:)
各位早安,
今天早上遇到了一个真正令人头疼的问题,我希望你能提供帮助。
我有一个后台切换器插件,在我的 Wordpress 站点外部。它希望以下列格式提供图像:
["http://www.path/to/image.jpg", "http://www.path/to/image2.jpg"]
我正在使用以下函数将字符串从我的站点传递到外部脚本:
<?php
if($page_id == 5) { ?>
<?php
$cat = 62; //category id
$posts = get_posts('showposts=-1&order=ASC&cat='. $cat);
$list = "'";
if ($posts) {
foreach($posts as $post) {
$imgsrc = wp_get_attachment_image_src(get_post_thumbnail_id( $post->ID ), "Full");
$featuredimgpath = $imgsrc[0];
$list .= '"'.$featuredimgpath.'",';
}
}
$list = substr($list, 0, -1);
$list .= "'";
echo "<script charset='utf-8'>var paths=encodeURIComponent($list);</script>";
?>
接收函数是这样处理的...
paths = decodeURIComponent(paths);
if(jQuery().bgswitcher) {
$(".splash").bgswitcher({
images: [paths], // Background images
effect: "fade", // fade, blind, clip, slide, drop, hide
interval: 4000, // Interval of switching
loop: true, // Loop the switching
shuffle: false, // Shuffle the order of an images
duration: 1500, // Effect duration
easing: "linear" // Effect easing
});
}
尽管控制台日志和警报输出以预期格式显示字符串,但所有关联图像的结果都是 404。
我唯一注意到的是接收脚本输出带有 ASCII/UTF-8 个字符的字符串,例如 %22 替换引号。这就是为什么我使用了 encodeURI 功能,但问题仍然存在。
有谁知道我该如何解决这个问题?或者即使我以错误的方式解决问题?
一如既往地提前致谢! 格雷厄姆
更改此行:
echo "<script charset='utf-8'>var paths=encodeURIComponent($list);</script>";
到
echo "<script charset='utf-8'>var paths=$list;</script>";
想通了!我只是使用 PHP 直接将 jQuery 打印到页面 - 这完全消除了跨文件编码问题:)