2011-01-24 75 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。

相关问题