PHP / jQuery UTF问题

时间:2015-01-16 09:57:34

标签: jquery wordpress http encoding utf-8

早上的人,

今天早上有一个真正令人头疼的问题,我希望你能帮忙。

我有一个后台切换器插件,在我的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函数但问题仍然存在的原因。

有谁知道我怎么能解决这个问题?或者即使我以错误的方式解决问题?

提前感谢,一如既往! 格雷厄姆

2 个答案:

答案 0 :(得分:1)

更改此行:

echo "<script charset='utf-8'>var paths=encodeURIComponent($list);</script>";

echo "<script charset='utf-8'>var paths=$list;</script>";

答案 1 :(得分:0)

想出来!我只是直接使用PHP将jQuery打印到页面 - 这完全消除了跨文件编码问题:)