почему я не могу передать эту переменную в функцию JavaScript? - PullRequest
1 голос
/ 11 ноября 2009

В моем php-файле есть переменная, которую я хочу передать в функцию javascript всякий раз, когда пользователь щелкает ссылку на моей php-странице.

вот кратко php:

$delete_img=$image_id.'_'.$newfilename;
$display_image.="<td><img src='../temp_images/$newfilename'>";
if ($i==$extra_pic){ 
$display_image.="<br><a href='#' onclick='window.parent.reset_imageform($i, $delete_img);'>delete picture</a></td>";}

"if ($ i == $ extra_pic) ИСТИНА, так что не возражайте, что ...

Проблема в том, что если щелкнуть ссылку «удалить изображение», должна быть вызвана функция reset_imageform (nr, pic_nr), но это происходит не всякий раз, когда я пытаюсь передать переменную $ delete_img в функцию. Как только я удалю эту переменную из вызова, как это 'reset_imageform ($ i);' тогда это работает. но добавив эту переменную, она не будет работать. Функция вообще не вызывается!

Переменная содержит случайный идентификатор nr с подчеркиванием, а затем имя файла, например, вот так: 23432423439_picture.jpg

Есть ли что-то, чего мне здесь не хватает, нужно ли что-то сделать с $ delete_img перед отправкой в ​​php?

Все мои документы в формате utf-8!

Спасибо

PS: просто дайте мне знать, если вам нужно больше информации ...

Ответы [ 3 ]

5 голосов
/ 11 ноября 2009

Поскольку это строка, вам нужно заключить ее в кавычки.

Правильный путь таков:

$display_image.='<br><a href="#" onclick="window.parent.reset_imageform(' . $i . ', '
    . htmlspecialchars(json_encode($delete_img))
    . ');">delete picture</a></td>';

Я поменял кавычки, чтобы они работали для любой строки; в противном случае, если вы используете его где-то еще, а строка содержит апостроф, это не сработает. Альтернативой сделать обмен котировками было бы передать ENT_QUOTES в htmlspecialchars().

Вы говорите, что $i само по себе работает, поэтому я предполагаю, что $i является целым числом - поэтому для него не нужно цитировать.

3 голосов
/ 11 ноября 2009

Если возникают проблемы с Javascript, не смотрите на код на стороне сервера, который его генерирует, а посмотрите на конечный результат (щелкните правой кнопкой мыши страницу в веб-браузере и выберите «Просмотреть исходный код» или около того) и сконцентрируйтесь только на сгенерированном коде JS. Таким образом, вы должны были заметить пропущенные кавычки вокруг строковой переменной JS гораздо раньше.

3 голосов
/ 11 ноября 2009

Если вы передаете строку в функцию JavaScript, она должна быть правильно заключена в кавычки:

Так что без php это выглядит так:

<br><a href='#'
  onclick='window.parent.reset_imageform(5, "23432423439_picture.jpg");'>
    delete picture</a></td>

Итак, чтобы получить полученный HTML-код, вам нужно включить кавычки:

$display_image.="<br><a href='#'
  onclick='window.parent.reset_imageform({$i}, \"{$delete_img}\");'>
    delete picture</a></td>";

У нас есть несколько уровней кавычек, поэтому двойные кавычки вокруг 23432423439_picture.jpg необходимо экранировать, например \"

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