PHP для JavaScript Подтвердить переменную окна сообщения Не определено (но имеет значение)?

Первое сообщение на форуме, хотя частый читатель, нужно решение для этого:

php-программа, заполняющая строки html-таблицы:

echo "<td align='left' class='padded'><a href='#' onClick='confirmArrival(".$rowCont['id'].");'>Process</a></td>";

когда пользователь нажимает, чтобы обработать элемент, отображается сообщение подтверждения JavaScript с функцией:

            function confirmArrival(itemId)
            {
                
                if (confirm("Are you sure you want to process this Item ?\n"+itemId))
                {
                    window.location='processscript_item1.php?itemId='+itemId;
                }
            }

Мне нужно отобразить значение другой записи php, изменил onClick для отправки 2 аргументов:

echo "<td align='left' class='padded'><a href='#' onClick='confirmArrival(".$rowCont['id'].",".$rowCont['second_item'].");'>Process</a></td>";

и изменил функцию:

function confirmArrival(itemId, second_item)
            {
                
                if (confirm("Are you sure you want to process this Item ?\n"+second_item))
                {
                    window.location='processcript_item1.php?itemId='+itemId;
                }
            }

Получение UnCaught ReferenceError: (здесь отображается значение переменной second_item) не определено

Окно сообщения не отображается, но я вижу передаваемые значения

Любая помощь очень ценится

Спасибо,

Джозеф

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужны цитаты

onClick='confirmArrival(\'".$rowCont['id']."\',\'".$rowCont['second_item']."\')

Я предлагаю делегировать и использовать атрибуты

 <td align='left' class='padded'><a href='#' 
   class = "confirm" 
   data-id='<?= $rowCont[' id ']?>' 
   data-second='<?= $rowCont[' second_item '] ?>'>Process</a></td>

так

document.getElementById('tableId').addEventListener("click", function(e) {
  const tgt = e.target;
  if (tgt.classList.contains('confirm')) {
    if (confirm("Are you sure you want to process this Item ?\n" + tgt.dataset.second)) {
      tgt.href = 'processcript_item1.php?itemId=' + tgt.dataset.id;
      console.info("going to ", tgt.href)
    } else {
      e.preventDefault(); // cancel link
    }
  }
})
<table id = "tableId">
  <tbody>
    <tr>
      <td align='left' class='padded'><a href='#' class = "confirm" data-id='ID1' data-second='Second item 1'>Process</a></td>
    </tr>
    <tr>
      <td align='left' class='padded'><a href='#' class = "confirm" data-id='ID2' data-second='Second item 2'>Process</a></td>
    </tr>
  </tbody>
</table>

спасибо, @mplungjan попробовал ваше первое решение и получил Uncaught SyntaxError: недопустимая escape-последовательность для onClick='confirmArrival(\'".$rowCont['id']."\',\'".$rowCont[‌​'second_item' ]."\')

Joseph 23.12.2020 20:03

это работает, ценю ваши предложения, я заменил ' (одинарную кавычку) в вашем первом образце на " (двойные кавычки), и я получаю окно сообщения с правильным значением переменной и без ошибок, большое спасибо @mplungjan

Joseph 23.12.2020 20:21

Если есть ошибки, не используйте первое решение — или проверьте, правильно ли я поставил кавычки, просмотрев исходный код, чтобы увидеть, не пропущено ли одно

mplungjan 23.12.2020 20:21

Другие вопросы по теме