Перейти к публикации

Модуль с использованием ajax


Рекомендованные сообщения

Лицензия zelenb.com и неактивированная лицензия

В документации к движку не нашел по этому вопросу никакой информации, поэтому пишу здесь.

Суть модуля: при нажатии на кнопку аякс запрос к файлу из которого получаем данные. Все отлично работает как самостоятельный скрипт, но как только модуль подключается к dle он перестает работать ( работает если для получения данных используем php).

код следующий

$(document).ready(function(){

$('#getContent').click(function(){

$.ajax({

url: "/content.php",

cache: false,

beforeSend: function() {

$('#divContent').html('Получаем контент');

},

success: function(html){

$("#divContent").html(html);

}

});

return false;

});

});

Возможно есть какие то тонкости с подключением и работой аякса в модуле для DLE, которые не указаны в документации к скрипту?

Ссылка на сообщение
Поделиться на других сайтах

Возможно есть какие то тонкости с подключением и работой аякса в модуле для DLE, которые не указаны в документации к скрипту?

Это не DLE а библиотека Jquery и никаких особенностей в DLE нет, смотрите ошибки JS в консоле брауера и вы увидите где именно у вас ошибка возникает.

Ссылка на сообщение
Поделиться на других сайтах

В том то и дело, что скрипт работает на отельном хосте, а перестает работать при подключении к DLE. Php выполняется, следовательно сам модуль подключен правильно, а вот ajax не может получить доступ к файлу (на все файлы 777 локально). Нашел папку engineajax, может нужно работать через нее?

Ссылка на сообщение
Поделиться на других сайтах

Richiooo,

Я вам сказал где и как искать ошибку, все остальное это гадание. Папки и их названия не имеют ни малейшего к этом отношения.

а вот ajax не может получить доступ к файлу

В том то и дело, что скрипт работает на отельном хосте

При ajax можно обращаться только к тому файлу, который расположен на том же хосте. где и выполняется JS скрипт

Ссылка на сообщение
Поделиться на других сайтах

В том то и дело, что на отдельном домене скрипт работает, а перестает работать как модуль dle и ошибок в консоле нет(и скрипт и яваскрипт на одном и том же хосте).

Скрипт абсолютно работоспособен на отдельном домене (ошибок в консоле нет), когда же переносим и подключаем его как модуль dle, при аякс запросе выдает следующее


Warning: fopen(engine/modules/aaa/db/test.txt) [function.fopen]: failed to open stream: No such file or directory in www\engine\modules\aaa\load.php on line 8

Warning: filesize() [function.filesize]: stat failed for engine/modules/aaa/db/test.txt in \www\engine\modules\aaa\load.php on line 9

Warning: fread(): supplied argument is not a valid stream resource in a \www\engine\modules\aaa\load.php on line 9

Warning: array_rand() [function.array-rand]: Second argument has to be between 1 and the number of elements in the array in \www\engine\modules\aaa\load.php on line 12

Warning: fclose(): supplied argument is not a valid stream resource in \www\engine\modules\aaa\load.php on line 20

повторюсь, абсолютно все файлы в папке modules (и php и js) javascript следующий

$(document).ready(function(){

$('#getContent').click(function(){

$.ajax({

url: "/engine/modules/aaa/load.php",

cache: false,

beforeSend: function() {

$('#divContent').html('Получаем контент');

},

success: function(html){

$("#divContent").html(html);

}

});

return false;

});

});

Изменение пути /engine/modules/aaa/load.php на load.php, engine/modules/aaa/load.php не помогает

Отсюда и вопрос, что возможно аякс запрос должен обрабатываться движком?

Изменено пользователем Richiooo
Ссылка на сообщение
Поделиться на других сайтах

У вас "криво" написан код PHP в файле load.php, а именно некорректно указан путь в нем для чтения файла test.txt. Вы сообщение об ошибке внимательно читайте

Warning: fopen(engine/modules/aaa/db/test.txt) [function.fopen]: failed to open stream: No such file or directory in wwwenginemodulesaaaload.php on line 8

Которая означает что нет нужного файла. А нет его потому что пути идут относительно корня сервера. Корень сервера это не корень домена. Это разные вещи. Поместив подключение в DLE ваш файл не является стартовым для PHP интерпретатора. Поэтому ваш код в следствии неверного указания пути читается неверно. Ни Ajax ни DLE ни имеет к этому никакого отношения, просто у вас некорректно написан код вашего модуля, который не может работать универсально на любом сервере при любом местоположении вашего php файла.

Ссылка на сообщение
Поделиться на других сайтах

Какой бы путь не указывал все равно выдает ошибку чтения файла. require ROOT_DIR.'/engine/modules/aaa/db/test.txt'; и любой другой путь, перепробовал уже все варианты.. Оставил в load.php только строку с инклудом файла и при аякс запросе никаким способом его не хочет открывать.

При этом сам load.php работает, а вот если в него включить include, перестает работать. Какой путь будет универсальным?

Ссылка на сообщение
Поделиться на других сайтах

А у вас, в вашем load.php

ROOT_DIR.'/engine/modules/aaa/db/test.txt';[/CODE]

Константа [b]ROOT_DIR[/b] то определена? Подозреваю, что нет.

Ссылка на сообщение
Поделиться на других сайтах

Какой путь будет универсальным?

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

Ссылка на сообщение
Поделиться на других сайтах

Richiooo, для вашего load.php лежащего по такому пути /engine/modules/aaa/load.php


<?php

define('ROOT_DIR', substr(dirname(__FILE__), 0, -19));

define('ENGINE_DIR', ROOT_DIR.'/engine');


echo "<pre>";

var_dump (ROOT_DIR);

var_dump (ENGINE_DIR);

var_dump (file_get_contents(ROOT_DIR.'/engine/modules/aaa/db/test.txt'));

var_dump (file_get_contents(ENGINE_DIR.'/modules/aaa/db/test.txt'));

echo "</pre>";

die ("Stop");

?>

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...