Не работает Ajax

bor10811

Well-Known Member
Регистрация
04.04.2017
Сообщения
79
Делаю сложный сайт, где много контента должно подгружаться с помощью ajax. Разумеется, хотелось бы поместить все js файлы в отдельную папку (вместе с ajax скриптами).

В чём суть. В файле controller.php подключается ajax.js, различные настройки и другие скрипты. В нём же подключается manage.php, где находятся ссылки и блоки, с которыми работает ajax-скрипт. Запросы ajax-скрипт отправляет на файл content.php. Вся эта система подключена к index.php, который является, своего рода, главным контроллером. И проблема в том, что ajax вроде работает, но при этом либо не находит content.php, либо не может с ним взаимодействовать по каким-то причинам. Не пойму в чём дело.

Структура папок:

Корень

L Папка "work" => файл index.php

L Папка "js" => файл ajax.js

L Папка "page" => файл controller.php

L Папка "includes" => файл manage.php

L Папка "model" => файл content.php

Фишка состоит в том, что, когда все файлы находятся в одной папке, то проблем никаких не возникает. Но когда я пытаюсь разнести их все по разным папкам, то ajax ломается. При этом функция ожидания ответа (beforeSend) работает, да и в целом другие скрипты работают исправно. Но вот success ничего не возвращает.

Файл controller.php:


Код:
<head>
  <script src="js/jquery.js"></script>
  <script src="js/ajax.js"></script>
</head>
<body>
<?php include('includes/manage.php'); ?>
</body>
Файл ajax.js:

Код:
function funcBefore(){
  $("#information").text("Ожидание данных")
};
function funcSuccess(data){
  $("#information").text(data)
};
$(document).ready(function (){
  $("#load").bind("click", function() {
    var admin = "Admin";
    $.ajax({
      url: "content.php",
      type: "POST",
      data: ({name: admin, number: 5}),
      dataType: "html",
      beforeSend: funcBefore,
      success: funcSuccess
    });
  });
});
Файл manage.php:

Код:
<p id="load" style="cursor: pointer;">Загрузить данные</p>
<div id="information"></div>
Файл content.php:

Код:
<?php echo 'Name: '.$_POST['name'].', number: '.$_POST['number']; ?>
При клике по "Загрузить данные" на какое-то мгновение появляется "Ожидание данных", после чего оно пропадает, но на его месте ответа от content.php не отображается. Я так понимаю, что есть какая-то проблема в самой ссылке url: "content.php", но пробовал писать абсолютный путь и это тоже ни к чему не привело.
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 074
F12 -> network
 

bor10811

Well-Known Member
Регистрация
04.04.2017
Сообщения
79
Посмотрел, но легче не стало. Сервер ничего не возвращает в ответ на запрос. Не помогает даже абсолютный путь к файлу.
 

BaNru

Пацифизжу
Команда форума
Регистрация
13.11.2010
Сообщения
4 074
Код ошибки пишет?
Обращаешься на этот же домен?
 

bor10811

Well-Known Member
Регистрация
04.04.2017
Сообщения
79
В консоли выводилась 404 ошибка.

Оказалось, что проблема была в файле htaccess, который не давал обратиться к файлу напрямую. Решил проблему, добавив строчку для исключения post-запросов из правила:

Код:
RewriteCond %{REQUEST_METHOD} !POST
 
Верх Низ