Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.09.2014, 00:23
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

Исчезает текст из переменной.
Здравствуйте!
Делаю ajax-запрос. Ко мне приходит ответ и сразу же через долю секунды пропадает со страницы. Ajax в отладчике в хроме пишет, что false. Не пойму как это. Прислать правильный рзультат, т.е. необходимую выборку из бд, показать на долю секунды на странице, а потом в отладчик написать false.


<form action="" method="post" >
					<table border="1" class="menu-main">
						<tr>
							<td style="text-align: center; width: 100px">Читатель</td>
							<td><input type="text" style="width: 100px" name="reader_barcode" id="qwerty" maxlength="8"></td>
							<td style="width: 300px">
														<br>Фамилия: <p id="p1"></p></br>
															<br>Имя: </br>
															<br>Отчество: </br>
							</td>
						</tr>
						<tr>
						<td colspan="3"><input type="submit" style="width:100%; height:35px;" value="Поиск читателя по штрих-коду" name="findreaderbtn" id="senduserinfo"></td>
						</tr>
				</form>


<script type="text/javascript">
		
		function runajax()
		{
			var reader_barcode = $("#qwerty").val();
			alert ("Данные уходят" + reader_barcode);

			$.ajax({
			  type: "POST",
			  data: "reader_barcode=" + reader_barcode,
			  url: "ajax/finduser",
			  dataType: "json",
			  success: function(data){
					var rese = JSON.stringify(data);
					alert( "Прибыли данные: " + rese);
					var readerlastname = rese.user_last_name;
					$("#p1").text(readerlastname);
				  } 
			})
		}
		$(document).ready(function(){
			$("#senduserinfo").click(runajax);
		});
</script>


public function action_finduser()
	{
		$reader_barcode = Arr::get($_POST, 'reader_barcode', '');
		$int_reader_barcode = (integer) $reader_barcode;

		mysql_connect('localhost', 'root', 'root');
		mysql_select_db("library");
		$q = mysql_query("select user_first_name,user_last_name,user_patronymic from users where user_barcode = '$int_reader_barcode'");
		$res = mysql_fetch_assoc($q);
	
		echo json_encode($res);
    }


P.S. return false и return true не помогают.

Последний раз редактировалось Lobezki, 16.09.2014 в 00:46.
Ответить с цитированием
  #2 (permalink)  
Старый 16.09.2014, 02:14
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,498

//здесь вы полученные данные(объект) превращаете в строку(stringify)
var rese = JSON.stringify(data);

//здесь alert отрабатывает нормально и показывает данные, не так ли?
alert( "Прибыли данные: " + rese);

//а вот здесь вы пытаетесь получить свойсво user_last_name у *!*строки*/!* rese, которое само собой не существует
var readerlastname = rese.user_last_name;

//в #p1 пишет undefined
$("#p1").text(readerlastname);
Должно быть:
var readerlastname = *!*data*/!*.user_last_name;


А по поводу исчезновения в отладчике могу предположить, что вы не научились пока пользоваться breakpoint'ами. Объект с данными же существует только на момент работы функции и исчезает(собирается GC) если не передан никуда дальше.
__________________
29375, 35

Последний раз редактировалось Aetae, 16.09.2014 в 02:18.
Ответить с цитированием
  #3 (permalink)  
Старый 16.09.2014, 09:03
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

Aetae, alert отрабатывает нормально. И var readerlastname = rese.user_last_name выводит мне всё как надо.

А вот объект, да никуда дальше не передаётся. Дело в том, что делал по примеру и в примере у человека всё отрабатывало. И что такое "собирается GC"?

https://www.youtube.com/watch?v=egdPcuBDPEE (после 9 мин)
Ответить с цитированием
  #4 (permalink)  
Старый 16.09.2014, 09:28
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Lobezki,
Цитата:
GC
Это сборщик мусора, который очищает память.
Ответить с цитированием
  #5 (permalink)  
Старый 16.09.2014, 13:46
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,498

Lobezki, в приведённом примере rese.user_last_name не может выводить ничего. Либо врёте вы, либо пример.
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 16.09.2014, 13:47
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

tsigel,
спасибо.

Брикопоинты показывают, что с содержимым объекта всё в порядке.
Ответить с цитированием
  #7 (permalink)  
Старый 16.09.2014, 13:51
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

Aetae, сейчас проверил, да действительно rese.user_last_name выводит только undefinied при alert'e. Сорри, вчера вечером уже затурканный был, вот и напутал. Но при data.user_last_name. Значение появляется на секунду и исчезает.
Ответить с цитированием
  #8 (permalink)  
Старый 16.09.2014, 14:50
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,498

Где появляется и исчезает? В отладчике? Тогда см. выше. А если в #p1 - значит возможно где-то дублируется вызов функции.
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 16.09.2014, 14:58
Аспирант
Отправить личное сообщение для Lobezki Посмотреть профиль Найти все сообщения от Lobezki
 
Регистрация: 09.09.2014
Сообщений: 48

Aetae,
в #p1.

Я переименоввывал, всё равно та же ерунда. после алерта ajax в хроме(Network) пишет одно слово false.

Последний раз редактировалось Lobezki, 16.09.2014 в 15:06.
Ответить с цитированием
  #10 (permalink)  
Старый 16.09.2014, 15:06
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,498

Короче. С приведённым кодом всё в порядке. #p1 перезаписывается откуда-то ещё, либо повторным вызовом runajax.
http://learn.javascript.ru/play/sw5Xjc

Либо же вы всё-таки не добавили return false, и страница тупо перезагружается.
__________________
29375, 35

Последний раз редактировалось Aetae, 16.09.2014 в 15:15.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема со scroll Chrome Элементы интерфейса 2 21.10.2013 14:46
прогкрутка к якорям cOAPerator Общие вопросы Javascript 20 27.08.2013 03:30
нужно заставить одновременно работать слайдер и модальное окно обратной связи kvant355 Javascript под браузер 3 22.07.2013 16:34
Выравнять три дива в одной строке debugx (X)HTML/CSS 9 06.10.2011 12:03