2011-01-24 59 views
1

我這個小PHP代碼片段:如何通過字符串包含的JavaScript功能可按特殊字符

 // $test='test'; 

     $test='just a test'; 
     echo "<a href=javascript:myfunction($number,$src_req,\"".$test."\")><img style='z-index:$z; src='images/$src'/></a>"; 

,我有這個小阿賈克斯片段...

function myfunction(param1,param2,param3) 
{ 
    var xmlHttp = getXMLHttp(); 
    xmlHttp.onreadystatechange = function() 
    { 
    if(xmlHttp.readyState == 4) 
    { 
     HandleResponse2(xmlHttp.responseText); 
    } 
    } 
    var p1=param1; 
    var p2=param2; 
    var p3=param3; 
    xmlHttp.open("GET", "config/ajax_pop.php", true); 
    xmlHttp.send(null); 


    $('#ResponseDiv2').dialog({  
     height: 140, 
     modal: true, 
     position: [490,140], 
     title:param3, 

    }); 
    ..... 

我想通過我的$測試PHP變量到我的JavaScript函數,但不幸的是,如果我的$測試變量包含空間字符然後JS腳本不起作用。如果我的$ test變量只包含一個單詞,那就工作得很好。

在瀏覽器當我檢查我看到鏈接:

一個,如果$測試變量只包含一個字,那麼:JavaScript的:MyFunction的(1,1, 「測試」)

B,如果$測試變量包含不止一個的話,那麼:JavaScript的:MyFunction的(1,1,「只是

謝謝你的幫助...

回答

1

必須包裹href本身用雙引號,然後用單引號值:

href=\"javascript:myfunction($number, $src_req, '".$test."')\" 
2

使用json_encode():http://php.net/json_encode

更新:下面是一個使用示例:

<?php 

$number = 1; 
$src_req = 2; 
$z = 3; 
$src = 4; 

$test = 'just a test 
with spaces and new lines'; 
echo "<a href=javascript:myfunction($number,$src_req," . json_encode($test) .")><img style='z-index:$z; src='images/$src'/></a>"; 

如果不起作用,試圖找出在什麼確切的方式,它不工作。 「無效」問題與「然後解決」問題的答案一樣有用。

在任何情況下,即使進行快速測試,在一行代碼中混合PHP,HTML,JavaScript和CSS也不值得。在功能和文件中分隔你的東西,讓你的生活變得更輕鬆。

+0

我沒有試圖在PHP $測試線後使用:json_encode($測試);但沒有工作 – holian 2011-01-24 08:55:28

+0

@holian - 看到我的更新。 – 2011-01-24 09:07:42

+0

按照你的建議修復了我的代碼,但是現在鏈接和前面的一樣:javascript:myfunction(1,1,「只是 頁面utf-8編碼。 – holian 2011-01-24 09:15:52

0

您可以使用php函數urlencode轉義字符串,並且可以使用javascripts unescape來查看unescape。

你必須解析第三個參數與UNESCAPE你的js函數...

以及阿爾瓦羅·維卡里奧G.提到你可以使用JSON。

相關問題