Я добавляю поле ввода комментариев к каждой статье XML-RSS. Когда я выбираю URL-адрес RSS, обычно получаются следующие результаты:
Код PHP
for ($i=0; $i<=19; $i++) {
$item_title=$x->item($i)->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$item_link=$x->item($i)->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$item_desc=$x->item($i)->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
$item_date=$x->item($i)->getElementsByTagName('pubDate')
->item(0)->childNodes->item(0)->nodeValue;
echo ("<p><a href='" . $item_link
. "' target=\'_blank\'>" . $item_title . "</a>");
echo ("<br>");
echo ($item_desc . "<br>".$item_date."</p>");
$item_link1 = str_replace('http://','',$item_link);
$item_link2 = str_replace('https://','',$item_link1);
$item_link3 = str_replace('/','-',$item_link2);
$item_link4 = str_replace('?','-',$item_link3);
$content = $item_title."--". $item_link."--".$item_desc."--".$item_date;
file_put_contents("./comments/".$item_link4.".txt",$content);
//Next line is something wrong or not??
echo "<option id = ".$item_link4." onclick=\"showComment(this.value)\" value = ".$item_link4."> Show Comments </option> <div id=\"".$item_link."\"></div>";
Далее я вижу результаты, как показано на картинке ниже.

И я кодирую JS, в котором есть функция showComment, как показано ниже.
function showComment(str) {
if (str.length == 0) {
document.getElementById(""+item_link4+"").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(""+item_link4+"").innerHTML = this.responseText;
}
};
var q = document.getElementById(""+item_link4+"").value;
xmlhttp.open("GET", "showComment.php?q = " + q, true);
xmlhttp.send();
}
}
Затем я кодирую showComment.php, как показано ниже, чтобы увидеть значение q. Но, Примечание: Неопределенный индекс: q в E: \ xampp \ htdocs \ code \ v1 \ showComment.php в строке 5.
Первая часть похожа на следующую.
// line 5 is $q = html...
$q = htmlspecialchars($_GET['q']);
global $result;
echo $q;
В конце концов, у меня что-то не так в JS-коде, который получил item_link4 Как изменить переменную JS, полученную из кода php-HTML? Пожалуйста, ваша доброта.
Трудный. В инструментах разработчика, как я могу проверить значение переменной в JS?
можно использовать console.info(your_variable);. он отобразит результат в инструментах разработчика консоли, или вы можете просто использовать alert(something);
Когда я использую var_dump ($ item_link4), результатом будет строка (56) "www.doctorsnews.co.kr-news-articleView.html-idxno = 123372" строка (56) "www.doctorsnews.co.kr-news- articleView.html-idxno = 123372 "строка (56)" www.doctorsnews.co.kr-news-articleView.html-idxno = 123372 вместо "показать комментарии"
console.info ($ item_link) VM2231: 1 Uncaught ReferenceError: $ item_link не определен в <anonymous>: 1: 13 (анонимный) @ VM2231: 1 console.info (item_link) VM2239: 1 Uncaught ReferenceError: item_link не определен в <анонимный>: 1:13
console.info (item_link4) VM2440: 1 Uncaught ReferenceError: item_link4 не определен в <anonymous>: 1: 13 (анонимный) @ VM2440: 1 console.info ($ item_link4) VM2443: 1 Uncaught ReferenceError: $ item_link4 не определен в <анонимный>: 1:13
Первая переменная PHP $ item_link4 отправляет значение на html-страницу. Но при onclick значение $ item_link4 не попадает в JS. Я думаю, что значение параметра уже анализировалось как строка. Итак, как мне поймать строку синтаксического анализа. Думаю, в этом есть смысл.
string(56) - это длина вашего значения, где тип - строка. и q должен иметь значение int, потому что вы используете document.getElementById, поэтому вы получаете эту ошибку
да это правильно. Вы можете перейти по этой ссылке stackoverflow.com/questions/2470089/…



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я столько раз пробовал. Наконец-то я получил хороший результат и пошел в лучшую сторону. Код PHP
echo " <option id = ".$i." onclick=\"showComment".$i."(this.value)\" value = ".$item_link4."> Show Comments </option>";
И я изменил код JS, как показано ниже.
<script>
function showComment0(str) {
if (str.length == 0) {
document.getElementById("0").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("0").innerHTML = this.responseText;
}
};
var q = document.getElementById("0").value;
xmlhttp.open("GET", "showComment.php?q = " +q, true);
xmlhttp.send();
}
}
</script>
....
<script>
function showComment22(str) {
if (str.length == 0) {
document.getElementById("22").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("22").innerHTML = this.responseText;
}
};
var q = document.getElementById("22").value;
xmlhttp.open("GET", "showComment.php?q = " +q, true);
xmlhttp.send();
}
}
</script>
<script>
function showComment23(str) {
if (str.length == 0) {
document.getElementById("23").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("23").innerHTML = this.responseText;
}
};
var q = document.getElementById("23").value;
xmlhttp.open("GET", "showComment.php?q = " +q, true);
xmlhttp.send();
}
}
</script>
Итак, я сделал скрипт с идентификаторами от 0 до 18. То есть нужно 19 скриптов. Жду ответа получше.
вы нашли свой собственный путь: D, удачного кодирования.
Вы пробовали использовать
var_dump(item_link4)в своем PHP-коде? или вы можете использовать инструменты разработчика в своем браузере, чтобы показать, имеет лиyour optionуже значение