Richiooo 4 Опубликовано: 20 октября 2012 Рассказать Опубликовано: 20 октября 2012 Лицензия 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, которые не указаны в документации к скрипту? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 072 Опубликовано: 21 октября 2012 Рассказать Опубликовано: 21 октября 2012 Возможно есть какие то тонкости с подключением и работой аякса в модуле для DLE, которые не указаны в документации к скрипту? Это не DLE а библиотека Jquery и никаких особенностей в DLE нет, смотрите ошибки JS в консоле брауера и вы увидите где именно у вас ошибка возникает. Цитата Ссылка на сообщение Поделиться на других сайтах
Richiooo 4 Опубликовано: 21 октября 2012 Рассказать Опубликовано: 21 октября 2012 Автор В том то и дело, что скрипт работает на отельном хосте, а перестает работать при подключении к DLE. Php выполняется, следовательно сам модуль подключен правильно, а вот ajax не может получить доступ к файлу (на все файлы 777 локально). Нашел папку engineajax, может нужно работать через нее? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 072 Опубликовано: 21 октября 2012 Рассказать Опубликовано: 21 октября 2012 Richiooo, Я вам сказал где и как искать ошибку, все остальное это гадание. Папки и их названия не имеют ни малейшего к этом отношения. а вот ajax не может получить доступ к файлу В том то и дело, что скрипт работает на отельном хосте При ajax можно обращаться только к тому файлу, который расположен на том же хосте. где и выполняется JS скрипт Цитата Ссылка на сообщение Поделиться на других сайтах
Richiooo 4 Опубликовано: 22 октября 2012 Рассказать Опубликовано: 22 октября 2012 (изменено) Автор В том то и дело, что на отдельном домене скрипт работает, а перестает работать как модуль 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 не помогает Отсюда и вопрос, что возможно аякс запрос должен обрабатываться движком? Изменено 22 октября 2012 пользователем Richiooo Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 072 Опубликовано: 22 октября 2012 Рассказать Опубликовано: 22 октября 2012 У вас "криво" написан код 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 файла. Цитата Ссылка на сообщение Поделиться на других сайтах
Richiooo 4 Опубликовано: 24 октября 2012 Рассказать Опубликовано: 24 октября 2012 Автор Какой бы путь не указывал все равно выдает ошибку чтения файла. require ROOT_DIR.'/engine/modules/aaa/db/test.txt'; и любой другой путь, перепробовал уже все варианты.. Оставил в load.php только строку с инклудом файла и при аякс запросе никаким способом его не хочет открывать. При этом сам load.php работает, а вот если в него включить include, перестает работать. Какой путь будет универсальным? Цитата Ссылка на сообщение Поделиться на других сайтах
Sarvan 35 Опубликовано: 25 октября 2012 Рассказать Опубликовано: 25 октября 2012 А у вас, в вашем load.php ROOT_DIR.'/engine/modules/aaa/db/test.txt';[/CODE] Константа [b]ROOT_DIR[/b] то определена? Подозреваю, что нет. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 072 Опубликовано: 25 октября 2012 Рассказать Опубликовано: 25 октября 2012 Какой путь будет универсальным? универсальных не бывает, их нужно определять в вашем скрипте и относительно вашего файла, а потом уже относительно полученного пути идти к подключаемому файлу. Изучайте работу функции dirname ( __FILE__ ); Цитата Ссылка на сообщение Поделиться на других сайтах
Sarvan 35 Опубликовано: 25 октября 2012 Рассказать Опубликовано: 25 октября 2012 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"); ?> 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.