Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.09.2018, 16:52
him him вне форума
Аспирант
Отправить личное сообщение для him Посмотреть профиль Найти все сообщения от him
 
Регистрация: 19.08.2013
Сообщений: 93

Что не работатет ajax
Пример взят из интернета.

Код:
<!DOCTYPE HTML> 
<html>
 <head>
  <title>1111</title>
  <link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
  <meta http-equiv="content-language" content="ru">
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
	
	<script src="jquery.min.js"></script>
	<script src="1.js"></script>

 </head>
<body>

<a href="" class="articles" data-id="1">Статья 1</a>
<a href="" class="articles" data-id="2">Статья 2</a>
			<div id="content"></div>
</body>
</html>
Код:
$(function(){
    $('.articles').on('click', function(){
		console.log("111");
        var artId = $(this).data('id'); // id статьи в базе данных
		console.log("3333");
        $.ajax({
            url: '111.php', // путь к обработчику
            type: 'POST', // метод передачи данных
            dataType: 'json', // формат данных ожидаемых в ответе
            data: {article_id: artId}, // передаваемые данные {ключ1 : значение1, ключ2 : значение2}
            success: function(data){ // в случае удачного завершения запроса к серверу
			console.log("44444");
                // в переменной data - ответ сервера
                if(data){
                    $('#content').html(data); // выводим статью в нужный блок
                }
            }
        });
    });
});
Код:
<?php
if(!empty($_POST['article_id'])) $article_id = (int)$_POST['article_id'];
if(isset($article_id)) {
   // делаем запрос в БД с выборкой нужной статьи
   // и отправляем данные ответом или false, если статьи с указанным id не найдено
   echo json_encode('000000');
   exit;
}
echo json_encode('000000');
echo '555';		
?>
Кликаю на ссылку. В консоли смотрю.
POST XHR http://localhost/111.php

Заголовки ответа - крутится стрелочка.

Что не так ??? Уже глаза сломал ..

Код:
<?php
echo '555';		
?>
Так тоже пробовал.
Ответить с цитированием
  #2 (permalink)  
Старый 17.09.2018, 17:26
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

$('.articles').on('click', function(event) {
	event.preventDefault(); 
        //var artId = $(this).data('id'); не нужно
	$.ajax({
            url: '111.php', // путь к обработчику
            type: 'POST', // метод передачи данных
            dataType: 'json', // формат данных ожидаемых в ответе - HTML, это не JSON, видимо убрать это надо?
            data: {article_id: this.id}, // откуда взялся ключ2 : значение2 ?
//.... код далее

Последний раз редактировалось laimas, 17.09.2018 в 17:40.
Ответить с цитированием
  #3 (permalink)  
Старый 17.09.2018, 17:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

if(!empty($_POST['article_id'])) $article_id = (int)$_POST['article_id'];
if(isset($article_id)) {
// делаем запрос в БД с выборкой нужной статьи
// и отправляем данные ответом или false, если статьи с указанным id не найдено
echo json_encode('000000');
exit;
}
echo json_encode('000000');

echo '555'; - 'эта строка вообще будет причиной ошибки, нельзя ни до, ни после передачи json делать вывод в браузер.

<?
if($article_id = (int)$_POST['article_id']) {
   // делаем запрос в БД с выборкой нужной статьи
   // и отправляем данные ответом или false, если статьи с указанным id не найдено
    exit(json_encode('000000')); //а какой смысл в таких данных для json формата, если клиент ждет статью?
}

Последний раз редактировалось laimas, 17.09.2018 в 17:40.
Ответить с цитированием
  #4 (permalink)  
Старый 18.09.2018, 08:30
him him вне форума
Аспирант
Отправить личное сообщение для him Посмотреть профиль Найти все сообщения от him
 
Регистрация: 19.08.2013
Сообщений: 93

Что то все равно не заводится...

<?php
if($article_id = (int)$_POST['article_id']) {
	   // делаем запрос в БД с выборкой нужной статьи
	   // и отправляем данные ответом или false, если статьи с указанным id не найдено
	    //exit(json_encode('000000')); //а какой смысл в таких данных для json формата, если клиент ждет статью?
		echo '333';
		exit;
		
}

?>


$('.articles').on('click', function(event) {
	    event.preventDefault();
	        //var artId = $(this).data('id'); не нужно
	    $.ajax({
	            url: '111.php', // путь к обработчику
	            type: 'POST', // метод передачи данных
	        //    dataType: 'json', // формат данных ожидаемых в ответе - HTML, это не JSON, видимо убрать это надо?
	            data: {article_id: this.id}, // откуда взялся ключ2 : значение2 ?
				success: function(data){ // в случае удачного завершения запроса к серверу     //.... код далее
				console.log("44444");
                // в переменной data - ответ сервера
                if(data){
                    $('#content').html(data); // выводим статью в нужный блок
                }
            }
        });
});

Последний раз редактировалось him, 18.09.2018 в 08:34.
Ответить с цитированием
  #5 (permalink)  
Старый 18.09.2018, 09:41
him him вне форума
Аспирант
Отправить личное сообщение для him Посмотреть профиль Найти все сообщения от him
 
Регистрация: 19.08.2013
Сообщений: 93

Методом тыка выяснил, что проблема в :
$('.articles').on('click', function(event) {
});


хм ...

jquery.min.js
/*! jQuery v1.7.1 jquery.com | jquery.org/license */
Ответить с цитированием
  #6 (permalink)  
Старый 18.09.2018, 10:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Это очень старая версия, в ней нет метода .on(), есть .live(). Подключайте более свежую.
Ответить с цитированием
  #7 (permalink)  
Старый 18.09.2018, 10:18
him him вне форума
Аспирант
Отправить личное сообщение для him Посмотреть профиль Найти все сообщения от him
 
Регистрация: 19.08.2013
Сообщений: 93

скачал jquery-3.3.1.min.js

в html добавил

<form>
<input name="rrr" type="text" size="5" maxlength="5" id="rrr">
</form>


$('#rrr').on('keyup', function(){
		console.log("44444");
	});

Нажимаю в поле, сообщений нету ..

Опять не та версия ?
Ответить с цитированием
  #8 (permalink)  
Старый 18.09.2018, 10:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

<html>
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
$(function() {
    $('#rrr').on('keyup', function(){
        alert("Yes");
    });
});
</script>
</head>
<body>
<form>
<input name="rrr" type="text" size="5" maxlength="5" id="rrr">
</form>
</body>
</html>


Работает? А вы допускаете ошибки значит.
Ответить с цитированием
  #9 (permalink)  
Старый 18.09.2018, 11:57
him him вне форума
Аспирант
Отправить личное сообщение для him Посмотреть профиль Найти все сообщения от him
 
Регистрация: 19.08.2013
Сообщений: 93

Цитата:
$(function() {
Был пропущен - $
Поставил, все заработало.
Ответить с цитированием
  #10 (permalink)  
Старый 18.09.2018, 14:47
him him вне форума
Аспирант
Отправить личное сообщение для him Посмотреть профиль Найти все сообщения от him
 
Регистрация: 19.08.2013
Сообщений: 93

И тут появился вопрос безопасности от чужих.
ajax не стал передавать значение установленной сессии и проверка :

if (isset($_GET['get_rrr']) AND $_SESSION['user'])


не прошла. Как можно на JS получить сессию ?
Или есть другие пути ?
Как можно повысить обезопасность ??
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замыкание как аякс функция и ее данные Zalex Общие вопросы Javascript 0 06.06.2015 15:16
Книги по Ajax BaVa Учебные материалы 18 18.08.2013 14:05
Психологическая деформация программистов DreamTheater Оффтопик 59 24.03.2012 05:03
Как (эффективно) изучать JavaScript? JSTalker Общие вопросы Javascript 33 23.12.2010 03:13
Браузер доказывает что не видит функцию SleepWalker Общие вопросы Javascript 7 17.06.2009 23:14