
17.09.2018, 16:52
|
Аспирант
|
|
Регистрация: 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';
?> |
Так тоже пробовал.
|
|

17.09.2018, 17:26
|
Профессор
|
|
Регистрация: 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.
|
|

17.09.2018, 17:31
|
Профессор
|
|
Регистрация: 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.
|
|

18.09.2018, 08:30
|
Аспирант
|
|
Регистрация: 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.
|
|

18.09.2018, 09:41
|
Аспирант
|
|
Регистрация: 19.08.2013
Сообщений: 93
|
|
Методом тыка выяснил, что проблема в :
$('.articles').on('click', function(event) {
});
хм ...
jquery.min.js
/*! jQuery v1.7.1 jquery.com | jquery.org/license */
|
|

18.09.2018, 10:01
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Это очень старая версия, в ней нет метода .on(), есть .live(). Подключайте более свежую.
|
|

18.09.2018, 10:18
|
Аспирант
|
|
Регистрация: 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");
});
Нажимаю в поле, сообщений нету ..
Опять не та версия ?
|
|

18.09.2018, 10:37
|
Профессор
|
|
Регистрация: 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>
Работает? А вы допускаете ошибки значит.
|
|

18.09.2018, 11:57
|
Аспирант
|
|
Регистрация: 19.08.2013
Сообщений: 93
|
|
Был пропущен - $
Поставил, все заработало.
|
|

18.09.2018, 14:47
|
Аспирант
|
|
Регистрация: 19.08.2013
Сообщений: 93
|
|
И тут появился вопрос безопасности от чужих.
ajax не стал передавать значение установленной сессии и проверка :
if (isset($_GET['get_rrr']) AND $_SESSION['user'])
не прошла. Как можно на JS получить сессию ?
Или есть другие пути ?
Как можно повысить обезопасность ??
|
|
|
|