php ja javascript链接和编码

时间:2016-11-09 07:20:01

标签: javascript php

使用斯堪的纳维亚字母和编码时,我遇到了问题。使用下面的代码,javascript将一些额外的编码添加到变量

<script>
    function doit(params) {
       var url = "/linkto/code.php" + params;
       window.open(url,"Doit","width=750, height=600");
    } 
</script>

   <?php
        $values = urlencode($var1); // encoding skandinavian letters
        $param = '?test='.$values;  // add them to variable
        echo '<a href="javascript:doit('.$param.')">Do it!</a>'; // link to page
    ?>

将上面的代码更改为php时,更改不会发生,问题就会消失。

 $values = urlencode($var1); // encoding skandinavian letters
 $param = '?test='.$values;  // add them to variable
 // link to page
 echo '<a href="/linkto/code.php"'.$param.'>Do it!</a>'; 

大家好,

我无法使其工作,utf-8或iso-8859-1之间没有区别。 当使用javascript-function或direct link时,结果是别的。 你可以在这里试试: http://www.ajl.fi/tmp/test.php

这是代码:

test.php的:

<script type="text/javascript">
function doIt(params) {
      var url = "doit.php" + params;
      window.open(url,"doit");
}
</script>
<?php
$var1 = 'pähkinä';
$var1 = urlencode($var1);

echo sprintf("<a href=\"javascript:doIt('?var1=%s');\">Do it - call</a>",$var1)."<br>";
echo sprintf("<a href=\"doit.php?var1=%s\" target=\"_blank\">Do it - link</a>",$var1);
?>

这是doit.php:

<?php
var_dump($_GET);
?>

2 个答案:

答案 0 :(得分:0)

在ist代码中,此代码中有两个问题

1)短标签在<?php ?>这里不起作用:

echo '<a href="javascript:doit('<?=$param?>')">Do it!</a>'; // link to page 

2)你忘了在这里添加引号:

window.open(url,"Doit",width=750, height=600"); //missing quote here

修改后的代码:

<?php
$var1 = 'p%E4hkin%E4';
$values = urlencode($var1); // encoding skandinavian letters
$param = '?test='.$values;  // add them to variable
?>
<a href="javascript:doit('<?=$param?>')">Do it!</a>

<script type="text/javascript">
function doit(params) {
   var url = "/linkto/code.php" + params;
   console.log(url);
   window.open(url,"Doit","width=750, height=600");
}
</script>

答案 1 :(得分:0)

我回答自己 - 解决了。

IE,Edge和Chrome,两种情况都正常。 Firefox有问题。使用时

<select id="VIPGuests" name="VIPGuests" style="width:200px" tabindex="0"><option value="">Select VIP</option>
                      <%   foreach (var authorizedGuest in Model.XYZ)
                { 
                              if(Model.VIPGuests == authorizedGuest.Key )
                            {%>

                      <option selected="selected" value=<% = authorizedGuest.Key%>> <% = authorizedGuest.Value%> </option>
                           <% }
                            else
                            { %>

                      <option value=<% = authorizedGuest.Key%>> <% = authorizedGuest.Value%> </option>
                <%            }
                } %>
                </select>

结果不正确,但使用时

<a href="javascript:doit('<?=$param?>')">Do it!</a>

似乎适用于所有浏览器