Как передать строку в функцию JavaScript, которая содержит специальные символы - PullRequest
1 голос
/ 24 января 2011

У меня есть этот небольшой фрагмент php:

       // $test='test';

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

И у меня есть этот небольшой фрагмент ajax ...

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,

  }); 
  .....

Мне нравится передавать переменную $ test php в мой javascriptфункция, но, к сожалению, если моя переменная $ test содержит символ пробел , сценарий JS не работает.Если моя переменная $ test содержит только одно слово, тогда она будет работать хорошо.

В браузере, когда я проверяю ссылку, я вижу:

a, если переменная $ test содержит только одно слово, то:javascript: myfunction (1,1, "test")

b, если переменная $ test содержит более одного слова, то: javascript: myfunction (1,1, "just

Спасибо запомощь ...

Ответы [ 3 ]

2 голосов
/ 24 января 2011

Использовать 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 в одной строке кода не стоит усилий даже длябыстрое тестирование.Разделяйте вещи по функциям и файлам, чтобы облегчить себе жизнь.

1 голос
/ 24 января 2011

Вы должны обернуть href в двойные кавычки, а затем значение в одинарные кавычки:

href=\"javascript:myfunction($number, $src_req, '".$test."')\"
0 голосов
/ 24 января 2011

Вы можете экранировать строку с помощью функции php urlencode и можете использовать javascripts unescape для удаления.

вам нужно проанализировать третий параметр в вашей функции js с помощью unescape ...

также вы можете использовать json, как упомянул Альваро Дж. Викарио.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...