Вход

Просмотр полной версии : Как подключить файл обработки ajax запроса к своему проекту.


St.
12.10.2016, 15:14
Ниже приведен стандартый код отправки ajax запроса на сервер.
В filecheck - это имя файла php, который будет обрабатывать ajax запрос.

Как подключить filecheck к своему проекту? :help:
Может можно как-то вызвать функцию а не filecheck?
Эбм-мм-э... Мне не совсем это понятно...

П.С.
Не хочется в файле filecheck опять писать подключение к MySql и т.п.
Как это правильно (универсально) сделать?

// Отправка данных на сервер методом POST.
function TransferPOST(data, id, urlimgwait, urlimgsuccessfully, urlimgfailure, filecheck)
{
// data - что отправить на сервер.
// id - имя id div'а или span'а, где будет размещен ответ.
// urlimgwait - тег <img> индикатора ожидания.
// urlimgsuccessfully - тег <img> индикатор успешно.
// urlimgfailure - тег <img> индикатор неудача.
// filecheck - файл php, который будет обрабатывать запрос.

var data;
var id;
var urlimgwait;
var urlimgsuccessfully;
var urlimgfailure;
var filecheck;

// Создаём объект XMLHTTP.
var xmlhttp = getXmlHttp();

// Открываем асинхронное соединение.
xmlhttp.open('POST', filecheck, true);

// Отправляем тип содержимого.
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

// Отправляем POST-запрос.
xmlhttp.send("data=" + encodeURIComponent(data));

// Вставить изображение ожидания.
var image = document.getElementById(id);
image.innerHTML = urlimgwait;

// Ждём ответа от сервера
xmlhttp.onreadystatechange = function()
{
// Ответ пришёл
if (xmlhttp.readyState == 4)
{
// Сервер вернул код 200 (что хорошо)
if(xmlhttp.status == 200)
{
if (xmlhttp.responseText)
{
// Успешно.
var image = document.getElementById(id);
image.innerHTML = urlimgsuccessfully;
}
else
{
// Неудача.
var image = document.getElementById(id);
image.innerHTML = urlimgfailure;
}
}
else
{
alert("При обращении к серверу возникли проблемы: " + xmlhttp.statusText);
}
}
}
}

// Создать кросс-броузерный объект.
function getXmlHttp() {

var xmlhttp;

if (window.ActiveXObject)
{
try
{
// Если сценарий запущен под управлением IE.
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
xmlhttp = false;
}
}
else
{
try
{
// Если сценарий запущен под управлением Mozilla и т.п.
xmlhttp = new XMLHttpRequest();
}
catch (e)
{
xmlhttp = false;
}
}

if (!xmlhttp)
alert("Ошибка создания объекта XMLHttpRequest.");
else
return xmlhttp;
}

St.
12.10.2016, 15:29
St., зачем дублируешь параметры функции (строки 11-16)?

11 var data;
12 var id;
13 var urlimgwait;
14 var urlimgsuccessfully;
15 var urlimgfailure;
16 var filecheck;


Чтобы переменные были доступны только внутри функции (хух :-?).
Извините, их можно не дублировать?

Дополнительно о var: http://javascript.ru/var

St.
12.10.2016, 15:41
St., параметры функции доступны только внутри на то они и параметры...

Понял, параметры можно необъявлять. Исправлю...
Спасибо.

St.
12.10.2016, 15:56
St., не нужно их объявлять... а по самой теме я так и не понял что надо...

Нужно как-то подключить filecheck к своему проекту... ?
В filecheck имя файла php, который обрабатывает запрос.

laimas
12.10.2016, 15:56
Как подключить filecheck к своему проекту?

Клиент никак не может подключить серверный скрипт, если под подключением подразумевается именно оно.

St.
12.10.2016, 16:05
В filecheck имя файла php...
Получается в "filecheck" мне опять нужно писать подключение к MySql (login, password)... Т.е. "filecheck" в не моего проекта... Как бы эту задачу правильно решить?

Дополнительно.
Т.е. база недоступна, также недоступны глобальные переменные (пример: global $txt).

laimas
12.10.2016, 16:25
Получается в "filecheck" мне опять нужно писать подключение к MySql (login, password)... Т.е. "filecheck" в не моего проекта... Как бы эту задачу правильно решить?

Что мешает само подключение и прочие связанные с этим параметры описать в подключаемом файле?

St.
12.10.2016, 16:35
Что мешает само подключение и прочие связанные с этим параметры описать в подключаемом файле?

У меня в проекте есть готовая функция ConnectionMySql() - но она недоступна из "filecheck". "filecheck" в не проекта!

Мне повторно описывать "само подключение"?
Данные которые уже есть в global $txt (тоже повторно описывать)? :help:

laimas
12.10.2016, 17:12
У меня в проекте есть готовая функция ConnectionMySql()

И где она находится? Если функция, значит в каком либо подключаемом файле, не один же скрипт использует подключение. Что касается global $txt, то они объявляются некой функции и будет доступна в ней. Если во время вызова filecheck функция где она объявляется глобальной исполняется или исполняется скрипт где объявляется эта переменная, то она будет доступна в глобальном массиве $GLOBALS.

St.
12.10.2016, 18:28
Блин, блин, блин... Хух...
Извините, у меня простой вопрос, можно ли подключить файл php обработки ajax запроса к своему проекту?
Если да, то как? Или надо n-часть проекта втащить в этот файл php?
Я правильно понимаю?
Извините.

laimas
12.10.2016, 19:31
можно ли подключить файл php обработки ajax запроса к своему проекту?

Что значит подключить к своему проекту? Файл что чужой?

Подключить php-сценарий на клиенте нельзя, можно подключить результат его работы, например некий php-сценарий может динамически готовить некий файл стилей. Тогда подключая на странице этот файл стилей, обращаемся к этому php-сценарию.

А php-сценарий обработки какого либо запроса можно конечно подключить в другом php-сценарии. Например, если Ajax запрос обращается к "a.php", а сам обработчик параметров этого запроса находится в "b.php", то в "a.php", определив этот запрос, подключаем b.php".

St.
12.10.2016, 20:17
Что значит подключить к своему проекту? Файл что чужой?

На диске файлы a.php, b.php

<?php
// Это мой проект.
// ---

// Подключу в свой проект два файла.
require_once('/a.php');
require_once('/b.php');

// Теперь буду пользоваться функциями этих файлов.
showframe('Надпись');

// и т.д.
?>;

Я подключил к своему проекту a.php и b.php...

П.С. Разговор ниочем... :(

laimas
12.10.2016, 20:29
// Подключу в свой проект два файла.
require_once('/a.php');

Зачем, если ваш проект по сути и есть a.php? Какой-то темный лес, не понять о чем спрашивают и что делают.

St.
12.10.2016, 20:33
Зачем, если ваш проект по сути и есть a.php?
Это как? Покажите "магию"...

Какой-то темный лес, не понять о чем спрашивают и что делают.
Не понятно что отвечают. :(

St.
12.10.2016, 20:41
Файл что чужой?
Можно сказать и так: что файлы чужие (интерпретатор не знает о них ничего).
Попробуйте их объединить в один проект.

laimas
12.10.2016, 20:45
интерпретатор не знает о них ничего

Что вы чушь порете, интерпретатор вообще ничего не знает, что у вас там есть, пока вы не запустите скрипт на исполнение.

St.
12.10.2016, 21:21
Что вы чушь порете, интерпретатор вообще ничего не знает, что у вас там есть, пока вы не запустите скрипт на исполнение.

Спасибо за интересную информацию, я этого не знал... :)

Здесь вот вопрос для Вас (laimas).
Как достучатся из "filecheck" к функции, которая находится в другом файле php?

laimas
13.10.2016, 01:08
Как достучатся из "filecheck" к функции, которая находится в другом файле php?

Подключить "другой" файл в файле, в котором надо до нее достучаться. Сколько раз об этом говорить? Нет у вас никаких "своих" и "не своих" проектов/файлов, все каталоги и файлы лежащие в корне документов вашего сайта являются вашими, если вы имеете доступ к этому сайту как разработчик. Бывают только закрытые от прямого доступа извне каталоги, но php-скрыптам это не помеха.

St.
13.10.2016, 10:07
Подключить "другой" файл в файле, в котором надо до нее достучаться. Сколько раз об этом говорить? Нет у вас никаких "своих" и "не своих" проектов/файлов, все каталоги и файлы лежащие в корне документов вашего сайта являются вашими, если вы имеете доступ к этому сайту как разработчик. Бывают только закрытые от прямого доступа извне каталоги, но php-скрыптам это не помеха.

Да уж...
Профессор! Это у Вас нет проектов и файлов, потому что Вы не х.. не делаете.
Всего доброго... :thanks:

laimas
13.10.2016, 13:19
Это у Вас нет проектов и файлов, потому что Вы не х.. не делаете.

Да уж видно по мукам, чего вы делаете. Какая может быть проблема с подключением? Свой не свой, бред, не свой это у Чемберлена на сервере, а на своем сервере все свое, хоть заподключайтесь.

warren buffet
15.10.2016, 06:26
Не хочется в файле filecheck опять писать подключение к MySql и т.п.
Как это правильно (универсально) сделать?



Универсально через "точку входа". Роутер напиши, потом фронт-контроллер, потом лоадер и все будет универсально.

Заходим всегда через index.php -> роутим -> контролируем -> загружаем ... дыщь-дыщь ... выгружаем.

warren buffet
15.10.2016, 06:39
Профессор! Это у Вас нет проектов и файлов, потому что Вы не х.. не делаете.

Аспирант, не дерзи. У тебя не проект, а говнокод, и ты хочешь в этот говнокод вставить другой говнокод, а это вообще непросто.

Начиная свой "проект" ты пошел по легкому пути - а пришел в говно, потому что "не ходите широкими вратами, они все ведут на свалку" Мтф, 7:1-23

warren buffet
15.10.2016, 06:45
Если хочешь-таки оборудовать свой сайт аяксами, рассказывай о структуре своего говнокода. Ее можно понять по системе адресации твоего проекта. Как там страницы адресуются, цитируй примеры.

warren buffet
15.10.2016, 06:53
Вот смотри как все было бы просто, если бы ты пошел узкими вратами:

Заходим всегда через index.php -> роутим -> контролируем -> загружаем ... дыщь-дыщь ... выгружаем.

Вместо "загружаем" было бы "filecheck" и этому файлу были бы доступны уже все твои подключения-шмаключения и весь требуемый контекст.