Jump to content
Модераторы форума - Assembler & Bercana
  • Откройте аккаунт на Диспуте за 5 минут

    Продаете недвижимость, машину, телефон, одежду?  Тысячи  просмотров ежедневно на dispute.az  помогут вам. Бесплатная доска обьявлений.

Есть ли в Java-Script механизм доступа к базам данных?


Ped O' Feel

Recommended Posts

Есть ли в Java-Script механизм доступа к базам данных?

Как известно, в PHP можно посредством интегрированности с различными СУБД, к примеру, mySQL, получать доступ к базам данных.

В коде PHP пишется SQL-запрос, и он выполняется.

Теперь такой вопрос. А при помощи Java-Script можно как-нибудь получать информацию, расположенную на сервере? На 90% я уверен, что нет, так как Java-script - технология по своему замыслу, скорее, клиентская, чем серверная.

То есть, что я имею в виду. Например, происходит какое-то событие (к примеру, onClick, onChange) какого-то элемента веб-страницы, которому мы назначаем соответствующий обработчик. Нужно, к примеру, заменить содержимое какого-нибудь другого элемента, например, нисходящего списка (select). Это не проблема, это все осуществляется простыми командами Java-Script.

Но чем заменить? Я хочу, чтобы был взят запрос с какой-либо базы данных, хранящейся на сервере. И получить данные оттуда, а потом уже вписать их в список. Такое возможно?

Или для этого придется уже внутрь Java-Script-a вписывать PHP-код.

Или же все-таки есть какие-то технологии?

Спасибо за ответы.

Link to comment
Share on other sites

JavaSсript - по определению, клиентская технология, она не должна работать напрямую с БД из соображений безопасности, только через PHP. Все что описал автор легко реализуемо с помощью JavaSсript + PHP, данные пересылаются асинхронно в текстовом виде, в виде XML или JSON.

Link to comment
Share on other sites

выше упомянули ajax, разве он не для обновления страницы ? я не знал что им можно базу запрашивать

Им и не запрашивается, во всяком случае не напрямую. AJAX просто запрашивает HTTP ресурс, а что в нем происходит... да что угодно.

Link to comment
Share on other sites

а зачем вызывать бд на сервере через джаваскрипт а не сам пхп ? s0800.gif

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

Link to comment
Share on other sites

Спасибо, это примерно то, что мне надо:

When a user selects a customer in the dropdown list above, a function called "showCustomer()" is executed. The function is triggered by the "onchange" event:

Признаюсь, не владею AJAX-ом.

Но, как я понял,

из вот этого оператора

xmlhttp.open("GET","getcustomer.asp?q="+str,true);

здесь используется еще и технология ASP c запросом Get-типа.

То есть требуется еще и установленный на сервере ASP, получается?

Link to comment
Share on other sites

не имеет значения ASP, PHP или что либо иное. через XMLHTTPREQUEST дается запрос на URL, где обрабатывается запрос и выдается необходимый результат.

Link to comment
Share on other sites

Из JS точно никак нельзя получить доступ к БД. С этим все ясно. Но, даже и вставляя в обработчики скрипты PHP с mySQL запросами тоже есть определенные трудности. «Впрягать в одну повозку коня и трепетную лань»...

У PHP же какой принцип работы? Я тебе сформировал html страницу со всеми твоими запросами, и на здоровье, смотри ею, любуйся. Хочешь новую - вызови станицу с другими значениями переменных.

В принципе, при первом запуске, и при первом событии на html-странице (я передернул Select, вызвав событие onChange) - и только при первом запросе!! - все прошло шоколадно. Запрос сработал, выдав из БД oтfetch-енную информацию.

Но вот как передать значение Select-a в php - скрипт, то есть конвертировать переменную JS в переменную PHP. Похоже, что, по большому счету, никак . Более того, как снова активировать php-скрипт и mySQL-запросом? Без перезагрузки страницы! Ведь он, php, уже отработал, и больше не хочет.

Все источники в интернете указывают, что теми технологиями, которыми я пользовался, поставленную задачу не решить. Все толковые люди говорят, что для этого служит AJAX.

Link to comment
Share on other sites

Из JS точно никак нельзя получить доступ к БД. С этим все ясно. Но, даже и вставляя в обработчики скрипты PHP с mySQL запросами тоже есть определенные трудности. «Впрягать в одну повозку коня и трепетную лань»...

У PHP же какой принцип работы? Я тебе сформировал html страницу со всеми твоими запросами, и на здоровье, смотри ею, любуйся. Хочешь новую - вызови станицу с другими значениями переменных.

В принципе, при первом запуске, и при первом событии на html-странице (я передернул Select, вызвав событие onChange) - и только при первом запросе!! - все прошло шоколадно. Запрос сработал, выдав из БД oтfetch-енную информацию.

Но вот как передать значение Select-a в php - скрипт, то есть конвертировать переменную JS в переменную PHP. Похоже, что, по большому счету, никак . Более того, как снова активировать php-скрипт и mySQL-запросом? Без перезагрузки страницы! Ведь он, php, уже отработал, и больше не хочет.

Все источники в интернете указывают, что теми технологиями, которыми я пользовался, поставленную задачу не решить. Все толковые люди говорят, что для этого служит AJAX.

не очень понятно, что именно вы хотите сделать.

насколько я понял, вы хотите передать активное значение комбобокса в УРЛ.

можно использовать


var E = document.getElementById(yourComboboxID);
var myValue = E.options[E.selectedIndex].value;
var myUrl = 'myURL.php?comboValue='+myValue;
alert(myUrl);

Link to comment
Share on other sites

intregal, то, что вы предлагаете - это надо поменять URL и перезагрузить страницу. (location.href) А я хочу извлечь к-н. информацию из БД без перезагрузки страницы , а после , опять-таки, без перезагрузки страницы, лишь изменить содержание элемента на этой странице.

Link to comment
Share on other sites

intregal, то, что вы предлагаете - это надо поменять URL и перезагрузить страницу. (location.href) А я хочу извлечь к-н. информацию из БД без перезагрузки страницы , а после , опять-таки, без перезагрузки страницы, лишь изменить содержание элемента на этой странице.

ну так объяснили же выше, что надо использовать xmlhttprequest, что здесь не так?

Link to comment
Share on other sites

Запишите себе этот код где нибудь и используйте


function getXmlHttp(){
var xmlhttp;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
var xmlhttp = getXmlHttp();

Далее в нужном вам месте JS вы вставите следующий код


xmlhttp.open('GET', url, false);
xmlhttp.send(null);
if(xmlhttp.status == 200) {
//Здесь какой-то код который происходит после получения результатов от сервера. Например парсинг XML.
}

где "url" это адрес php скрипта на сервере. В этот же url можно вложить сразу переменные. Например url="somescript.php?id=12&type=1"

Если нужно передать параметры из переменной JS тогда url может выглядить так url="somescript.php?id="+id+"&type="+type;

Ну и дело за малым после этого. Создать непосредственно файл somescript.php который будет получать GET переменные и что либо с ними делать. Например обращаться к БД. Полученный от БД ответ можно тупо отправить обратно в JS оператором print(result). Но лучше использовать XML формат.

Link to comment
Share on other sites

Во-первых, чтобы не мучаться с AJAX и манипуляциями с DOM-элементами, стоит подключить библиотеку jQuery (или ее аналоги, Prototype например - кому что нравится).

Ped O' Feel, в вашем случае фронтэнд-приложение должно работать отдельно от серверных скриптов. Сервер не формирует HTML, а просто предоставляет данные для отображения, а как их отображать уже решает javascript. При нажатии на ссылки и кнопки идет xmlhttprequest на сервер, тот возвращает данные для отрисовки, и javascript их рисует с помощью манипуляций с DOM-элементами. HTML-страничка формирует сама себя, короче. Поэтому классический принцип работы PHP - "Я тебе сформировал html страницу со всеми твоими запросами, и на здоровье, смотри ею, любуйся. Хочешь новую - вызови станицу с другими значениями переменных" - тут не работает.

Общаться с сервером лучше используя json. Он удобный чтобы туда-сюда передавать структуры данных. И в js и в php есть соответствующие функции.

Вот коротенький пример (пишу на скорую руку, не тестировал - сорри):

js:

$("#select").change(function() {

$.get("get_items.php", {"category_id":this.value}, function(response) {

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

for (var i in response) {

var item = response;

$("#items").append("<div>Title:" + item.title + "</div>");

}

},"json");

});

get_items.php:

$q = $pdo->prepare("select title from items where category_id = :cid");

$q->execute(array(":cid" => $_GET["category_id"]));

$results = $q->fetchAll();

print json_encode($results);

Link to comment
Share on other sites

Ну допустим с Ajax'ом мучаться не приходится. Всю интуитивно понятно. Подключение громоздкого фреймворка для использования только лишь ajax запросов мне кажется глупостью. Проще добавить одну единственную функцию и создать на ее основе объект.

Непосредственно в данном случае.

Человек признался что с объектом xmlhttprequest (который он обозвал функцией) не работал прежде. Т.е. в чистом JS человек не стоит твердо на ногах. Куда уж к фреймворках переходить? Необходимость знания чистого JS еще никто не отменял.

Link to comment
Share on other sites

Согласен с Маздайка в том, что из-за одной мелочи подключать библиотеки не стоит))) Рассматривал как-то сайтик одной местной веб-студии, там были подключены (!) 3 библиотеки для всего лишь одного Фидбека ))))))

Но изучить, опробовать оба варианта, конечно стоит.

Link to comment
Share on other sites

Не знаю... Я всегда использую библиотеки чтобы получить интуитивно понятный и короткий код. Мне кажется 31кб достаточная цена за такие удобства. Даже такая простенькая задача как описал топикстартер может эволюционировать во что-то очень громоздкое, и писать все это на чистом JS будет сущим адом, имхо лучше сразу пользоваться готовыми великами.

ЗЫ Но это конечно же не значит что чистый JS учить не надо! Просто если вдруг человек решил писать что-то большое, пусть даже степ-бай-степ, лучше сразу начать с jquery. Вы же не будете спорить что без нее в будущем не обойтись?

Link to comment
Share on other sites

  • 1 month later...

Я немного порыл литературы про этот самый xmlhttprequest. Как я понимаю, это не столько Java script, сколько область применения AJAX-a.

Я решил задачу, обойдясь без xmlhttprequest (хотя и займусь изучением этой технологии в ближайшем будущем).

Я просто использовал "плавающие фреймы" <iframe src="......."> </iframe>.

Значению src одного из i-фреймов приcваивается значение php-скрипта c соответствующим параметром.

onChange="

newURL='spis_gor.php'+'?Sel_stran='+document.f1.Select1.value;

document.all.gorfreym.src=newURL;"

Select1-это список. Когда его передергивают (onChange), источником i-фрейма (ID="gorfreym") становится php-скрипт spis_gor.php с параметром, равным измененному значению нашего Select1. Работает.

Если у iframe-ов скрыть все границы (frameborder=0) и полосы прокрутки, ну и цвет, соответственно сделать таким же, как у родительского документа, то он сливается с его фоном и становится незаметным :)

По-любому, всем спасибо.

Link to comment
Share on other sites

Я немного порыл литературы про этот самый xmlhttprequest. Как я понимаю, это не столько Java script, сколько область применения AJAX-a.

Я решил задачу, обойдясь без xmlhttprequest (хотя и займусь изучением этой технологии в ближайшем будущем).

Я просто использовал "плавающие фреймы" <iframe src="......."> </iframe>.

Значению src одного из i-фреймов приcваивается значение php-скрипта c соответствующим параметром.

onChange="

newURL='spis_gor.php'+'?Sel_stran='+document.f1.Select1.value;

document.all.gorfreym.src=newURL;"

Select1-это список. Когда его передергивают (onChange), источником i-фрейма (ID="gorfreym") становится php-скрипт spis_gor.php с параметром, равным измененному значению нашего Select1. Работает.

Если у iframe-ов скрыть все границы (frameborder=0) и полосы прокрутки, ну и цвет, соответственно сделать таким же, как у родительского документа, то он сливается с его фоном и становится незаметным :)

По-любому, всем спасибо.

Про правильность использования iframe вам уже ответили. Я только добавлю, что в iframe не нужно извращаться с цветом и полосами прокрутки. Что бы его было не видно на странице, достаточно установить ему размеры width=0px height=0px. Ну а бордер конечно же перевести в 0

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Our picks

    • Начинают сносить мост Джаваншира(Гагаринский). Готовится ли Девичьей Башне?
      Начинают сносить мост Джаваншира. Слов нет. 

      Начинаются работы по сносу моста Джаваншира в Хатаинском районе Баку (бывший Гагаринский мост).
      Как сообщили Caliber.Az в пресс-службе Министерства транспорта и цифрового развития, мост будет снесен, на его месте построят наземную дорогу.
      В связи с этим с понедельника, 20 мая, с 17:00 движение по мосту будет закрыто
      https://caliber.az/post/241267/
        • Thanks
      • 69 replies
    • Мужчины или женщины - кто чаще становится инициатором развода в Азербайджане?
      В Азербайджане чаще всего женщины подают на развод, это 70% от общего количества обращений.
      Об этом Caliber.Az заявил главный советник Госкомитета по проблемам семьи, женщин и детей АР Рафик Махмудов, по словам которого, среди главных причин - насилие в семье, психологическое состояние или вмешательство извне в дела семьи.
      В первом квартале текущего года зарегистрирован 10 081 брак и 5 124 развода. За аналогичный период 2023 года - 11 870 браков и 5 118 разводов. Как показывает статистика, количество зарегистрированных браков сократилось примерно на 15 %.
      «В настоящее время в нашей стране существует большая потребность в усилении психологической поддержки семьи. В Азербайджане настало время решить вопрос о семейном психологе на институциональном уровне», - подчеркнул Р. Махмудов.
      https://media.az/society/v-azerbajdzhane-iniciatorami-razvoda-chashe-stanovyatsya-zhenshiny
      • 78 replies
    • Баку-Тбилиси-Карс: когда начнутся пассажирские перевозки?
      Движение грузовых поездов по недавно отремонтированной железнодорожной линии Баку-Тбилиси-Карс (БТК) начнется с 20 мая. На первоначальном этапе по этому маршруту будут осуществляться грузовые перевозки. После расширения БТК планируется перевозить до 6,5 млн тонн грузов в год.
      Но когда же начнутся долгожданные пассажирские перевозки по этой железнодорожной линии? 
      В ответ на запрос Bizim.Media в ЗАО «Азербайджанские железные дороги» сообщили, что на основании соответствующего решения Кабинета министров срок действия особого карантинного режима на территории Азербайджана продлен до 1 июля 2024 года.
      «По этой причине сухопутные границы с соседними странами остаются закрытыми, за исключением грузовых перевозок. Если будет принято решение об открытии границ, то можно будет провести переговоры с соответствующими органами соседних стран для организации международных пассажирских перевозок», - отметили в структуре.
      Отметим, что с 16 мая 2023 года грузинский участок БТК был закрыт на ремонт.
      https://media.az/society/baku-tbilisi-kars-kogda-nachnutsya-passazhirskie-perevozki
      • 9 replies
    • Какая страна больше подходит для воспитания детей? - Азербайджан занимает 78-е место в списке из 87 стран.
      Американская медиакомпания “U.S.News” исходя из текущих условий, подготовила рейтинговую таблицу, показывающую, какие из стран более благоприятны для воспитания детей.
      Как сообщает Yeniаvaz.com, согласно информации, опубликованной на официальном сайте компании, рейтинг был подготовлен на основе опроса более 17 тысяч человек и за основу были взяты следующие критерии:
      - ситуация с правами человека;
      - семейная обстановка;
      - гендерное равенство;
      - индекс счастья;
      - коэффициент дохода;
      - безопасность;
      - образовательные возможности;
      - состояние здравоохранения.

      Отмечалось, что по версии Организации экономического сотрудничества и развития Швеция и Норвегия, возглавляющие рейтинг, считаются отличными странами для воспитания детей. Каждая из этих стран тратит более 1% своего валового внутреннего продукта на образование и уход за детьми дошкольного возраста.
      Согласно рейтингу, в 5 лучших стран для воспитания детей входят:
      1. Швеция
      2. Норвегия
      3. Финляндия
      4. Дания
      5. Нидерланды

      Азербайджан занимает 78-е место в списке из 87 стран.
      В рейтинговой таблице Турция заняла 50-е, Украина - 57-е, Россия - 62-е, Беларусь - 69-е место. В число стран рейтинговой таблицы не вошли Армения и Грузия.

      Последние пять в списке:
      83. Узбекистан
      84. Мьянма
      85. Бангладеш
      86. Казахстан
      87. Иран

      https://www.yeniavaz.com/ru/news/230781/kakaya-strana-bolshe-podkhodit-dlya-vospitaniya-detey-azerbaydzhan-v-posledney-desyatke
        • Facepalm
        • Sad
      • 82 replies
    • TikTok запускает «Ночь музеев» с ведущими музеями Азербайджана
      Накануне Международного дня музеев, который отмечается 18 мая, ведущая платформа для просмотра и создания коротких видеороликов TikTok совместно с Министерством культуры АР и главными музеями страны запускает проект «Ночь музеев».
      Azerbaidzhana-PODROBNOSTI
      • 28 replies
    • Эмоциональный Интеллект
      Умственный интеллект (IQ) отвечает за то, как мы воспринимаем информацию через анализ происходящего, решаем задачи и принимаем решения. Но этого недостаточно, чтобы достичь успеха в карьерном росте. В 1990 году американские психологи Джон Д. Майер и Питер Саловей рассказали о новом виде интеллекта, который отвечает за эмоциональное восприятие информации. Это открытие произвело фурор: поняв, что с помощью эмоционального интеллекта (EQ) можно прийти к успеху, учёные и психологи стали активно исследовать эту тему и описывать свойства EQ. А работодатели при приёме на работу начали обращать большее внимание на социальные навыки кандидатов. Эмоциональный интеллект относится к soft skills, которые можно и нужно прокачивать для эффективного взаимодействия с людьми. Этот навык позволяет быстро осознать суть проблемы, использовать подходящий управленческий приём и получить максимальный результат.
       
      Тест на определение насколько вы управляете собственными эмоциями можно пройти здесь.
       
      А как ведёте себя ВЫ перед лицом проблемы?
      • 13 replies
    • Сильный пожар в цветочном магазине Ağ çiçəyim
      Предполагается, что пожар в цветочном магазине, расположенном на проспекте Азадлыг в Насиминском районе Баку,
        • Haha
      • 32 replies
    • Свалки, спрятанные среди гор: почему в Азербайджане образуются "мусорные сели"
      Сели смыли мусорный полигон в Гёйчайском районе, актуализировав проблему в сфере утилизации бытовых отходов в Азербайджане.
       
      • 3 replies
  • Recently Browsing   0 members, 0 guests

    • No registered users viewing this page.
×
×
  • Create New...