Intereting Posts
Symfony 2.1 app.session.flashbag.get («что-то») возвращает пустое значение Вставка даты и времени в MySql из PHP Symfony2: помните, что cookie удаляется при повторном открытии браузера PHP: HTML: отправить атрибут выбора HTML в POST Связь с PHP на Java Ограничение памяти PHP 25 МБ исчерпано – загрузка файлов / обрезка / изменение размера Что может объяснить браузер с перерывами, не загружая некоторые файлы CORS (crossorigin) javascript? Необходимое руководство по перенаправлению пользователя, если он не вошел в систему на панели администратора PHP. Можно ли использовать array_column с массивом объектов MySQL кодировки и сортировки: нечувствительность к акценту не работает Codeigniter: вложение электронной почты последних сообщений электронной почты не очищается при отправке нескольких писем в цикле Создать Captcha Image PHP codeigniter данные передача контроллер-> библиотека-> просмотр Запись в определенную строку в PHP окончательный способ получить IP-адрес пользователя php

вызов двух js-функций и не печатать сообщение

У меня проблема в ajax и она не печатает сообщение, которое я хочу. Давайте объясним. В php-коде у меня есть входной тег:

<input type="submit" id="login_button_add" name="submit" value="Add" onclick="add_building(); showbuildings( );" /> 

Эти две функции js:

 function add_building(){ var str1=document.getElementById("building_name").value; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("txtHint10").innerHTML=xmlhttp.responseText;} } xmlhttp.open("GET","add_building.php?q="+str1,true); xmlhttp.send(); } 

В add_building.php я добавляю строку в базу данных и печатаю сообщения. Запрос работает нормально, но он не печатает сообщение на моей странице с идентификатором, который у меня есть в моем html-коде. Я думаю, что проблема в том, что я называю вторую функцию js. Потому что, когда я вызываю только add_building() он отлично работает (печатает сообщения).

PHP-код add_building.php :

 $q=$_GET["q"]; if ($q!==''){ $link= mysqli_connect(...); mysqli_set_charset($link, "utf8"); $sql="SELECT * FROM buildings WHERE name='$q'"; $result = mysqli_query($link,$sql); if (!mysqli_num_rows($result)){ mysqli_set_charset($link, "utf8"); $sql="INSERT INTO buildings VALUES ('','$q','')"; $result =mysqli_query($link,$sql); echo "The building added successfully."; } else {echo 'Building name exists. Try a different.';} @ db_close($link); } else{echo 'Please insert a name.';} 

Другая функция js:

 function showbuildings(str) { if (str=="") { document.getElementById("show_buildings_js").innerHTML=""; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("show_buildings_js").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","showbds.php?q=",true); xmlhttp.send(); } 

В этой функции я печатаю таблицу на своей странице. Это прекрасно работает.

Проблема в том, что сообщения от add_building.php не печатаются в id='txtHint10' , несмотря на то, что все остальные в add_building.php работают. Я думаю, что проблема в том, что я вызываю вторую функцию js, и у меня есть два xmlhttp.responseText. Потому что, когда я вызываю только функцию js add_building() она отлично работает и печатает сообщения.

Проблема в том, что вы переписываете переменную xmlhttp со второй функцией javascript. В результате выполняется только обратный вызов от второй функции.

Чтобы обе функции работали независимо друг от друга, вам нужно будет использовать разные имена переменных или объявлять их локально в каждой из ваших функций с помощью var xmlhttp; (очиститель).

Обратите внимание, что область действия переменной в javascript является глобальной, если вы не объявите ее с помощью var в вашей функции.