2012-08-14 78 views
1

可能重複正確解析:
JSON: why are forward slashes escaped?斜線在PHP變量沒有在JavaScript

我傳遞包含"//"PHP爲Javascript值。然而,值解析"//"爲:"\/\/"當我解碼使用JSON,無論我如何嘗試包圍或轉義字符串......。

下面是我使用的代碼:

PHP

foreach($varr as $vr) 
{ 
    array_push($legendarr, "%%.%% - ".$vr);       
    array_push($linkarr, "http://".$_SERVER['HTTP_HOST']."/getdata.php?criteria=".$vr); 
} 

的JavaScript:

pie = r.piechart(320, 240, 100, <?php echo json_encode($vcr); ?>, { legend: <?php echo json_encode($legendarr); ?>, legendpos: "west", href: <?php echo json_encode($linkarr); ?>}); 

的問題是變量linkarr顯示形式:

http:\/\/localhost:8090\/getdata.php?criteria=......

誰能知道爲什麼會這樣?我該如何解決它?

謝謝。

+0

在PHP5.4 +中,您可以使用'JSON_UNESCAPED_SLASHES'選項。如前所述,雖然JS通常不需要。 (也可以在upgradephp'up_json_encode()'for早期的PHP版本中使用)。 – mario 2012-08-14 02:37:11

回答

1

的字符串"http:\/\/www.example.org"仍將被打印爲在JavaScript "http://www.example.org"

我相信轉義斜槓是JSON標準的一部分。但它不應該以任何方式影響你的JS代碼。

順便說一句,該mysql_escape_string('//')完全斷章取義; HTML!=數據庫。

+0

哎呀,那只是沮喪的表現......不幸的是我使用Raphael.js並且它錯誤地打印了http鏈接... – 2012-08-14 02:31:45

+0

剛發現問題來自其他地方。謝謝!! – 2012-08-14 09:44:39