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

    • В Баку начинается строительство новой дороги
      С учетом перспективного развития города Баку Государственным агентством автомобильных дорог Азербайджана дается старт строительству новой автомобильной дороги от улицы Гасана Алиева до станции метро «Кероглу», параллельно проспекту Зии Буниядова.
      Об этом сообщили в госагентстве.
      Общая длина шестиполосной дороги составит 3896 метров с шириной полос 3,5 метра. На дороге будут построены четыре тоннеля и три подземных пешеходных перехода.
      В настоящее время от метро «Улдуз» в направлении улицы Алескера Гаибова ведутся работы по транспортировке тяжелой техники и оборудования на территорию.
      https://media.az/society/v-baku-nachinaetsya-stroitelstvo-novoj-dorogi
        • Upvote
        • Like
      • 30 replies
    • В Баку выставлена на продажу квартира по фантастической цене - ФОТО
      В Баку выставлена на продажу квартира по фантастической цене.
      Как сообщает Oxu.Az, соответствующая информация распространена на сайтах объявлений.
      Так, девятикомнатную квартиру площадью 555 кв.м предлагают покупателям за 12 млн манатов.
        В объявлении упоминается, что на указанном этаже расположена только одна квартира и соседей не будет.
      https://ru.oxu.az/society/866997
        • Confused
        • Haha
      • 96 replies
    • Где выгоднее отдыхать: в Азербайджане или за рубежом? - ОПРОС
      Baku TV провел опрос среди жителей столицы с целью узнать, где, по их мнению, выгодно отдыхать: в Азербайджане или за рубежом.
      Большинство участников опроса предпочло потратить деньги на отдых за границей.
      «Проживание в наших гостиницах обойдется в три раза дороже», - сказал один из опрошенных.
      Между тем сотрудники туристических компаний также отметили, что цены на отели за границей практически такие же, как у нас, а в некоторых случаях даже ниже.
      «Например, стоимость недельного тура на одного человека в Габалу начинается от 700 манатов. А тур на тот же период в Грузию обойдется от 500 манатов», - сказал один из них.
       
        • Haha
        • Like
      • 128 replies
    • Отомстил отцу за избиение матери: жуткие подробности убийства брата главы ИВ Лянкярана

      Долгое время подробности этого жуткого происшествия не разглашались ни во время следствия, ни в ходе судебного процесса. Судьи решили, что слушания должны проходить в закрытом режиме, без допуска СМИ.
      Однако Qafqazinfo удалось выяснить некоторые детали этой семейной трагедии. Согласно материала
        • Sad
      • 35 replies
    • Депутат: Некоторых женщин убивают за то, что они не считают мужей главой семьи
      В последнее время в Азербайджане растет число женщин, убитых своими мужьями.
      По данным расследования Bizim.Media, за последние два месяца Генеральная прокуратура зарегистрировала около 10 фактов убийства женщин их супругами. Эта печальная статистика актуализирует вопрос о необходимости прохождения парами психологического анализа перед вступлением в брак.
      Между тем заместитель председателя комитета по правам человека Милли Меджлиса Таир Керимли в своем заявлении Bizim.Media отметил, что не испытывает оптимизма относительно идеи обязательного психологического анализа для пар перед свадьбой.
      «Прохождение медицинского осмотра перед браком обязательно, поскольку только так можно выявить скрытые заболевания. Но психологический анализ в Азербайджане не применяется, да и за рубежом такой широкой практики нет, и то лишь в добровольном порядке», - отметил депутат.
      Что касается женщин, убитых мужьями, Таир Керимли полагает, что это происходит из-за вопросов чести.
      «Одна из главных причин заключается в том, что некоторые дамы, прикрываясь гендерным равенством, создают образ сильной женщины и не считают мужей главой семьи, а некоторые и вовсе идут по плохому пути. То есть зачастую убийства женщин происходят из-за вопросов чести», - сказал он.
      Депутат призвал стремиться к построению чистого общества, чтобы никому даже в голову не приходило сворачивать на плохой путь.
      «В советское время тоже были случаи убийства женщин мужьями на почве ревности. В любом случае я не поддерживаю идею применения психологического анализа перед браком на законодательном уровне. Это будет своего рода унижением для пары: как будто мы проверяем, в своем ли они уме», - заключил Т.Керимли.
      https://media.az/society/deputat-nekotoryh-zhenshin-ubivayut-za-to-chto-oni-ne-schitayut-muzhej-glavoj-semi
        • Facepalm
        • Confused
      • 54 replies
    • В районе метро Гара Гараева продаётся объект под новостройкой
      В Низаминском районе,около станции метро Г.Гараева, под новостройкой на 1-м этаже (18/1) продается объект общей площадью 65 кв.м. Очень интенсивный пешеходный и автомобильный трафик. Имеются все условия, развитая инфраструктура, паркинг и т.д. Все документы в порядке, купчая на нежилое помещение.Оплата 1%.   Цена 550000  манат     0552522225
      • 0 replies
    • Можно ли использовать пенсионные накопления до выхода на пенсию?
      Пенсионный возраст в Азербайджане является предметом многочисленных дискуссий.
      Для мужчин он составляет 65 лет, для женщин – 63,5 года. Возрастной предел для женщин увеличивается на шесть месяцев каждый год, начиная с 1 июля 2017 года. В 2027-м возраст выхода на пенсию для мужчин и женщин будет одинаковым - 65 лет.
      Как долго гражданин может прожить после выхода на пенсию - никто не знает. Таким образом, накопленный за годы работы пенсионный капитал можно будет получать в лучшем случае 10-15 лет.
      Почему мы не можем использовать накопления раньше, чем выйдем на пенсию? Обязательно ли нам ждать 65 лет, чтобы воспользоваться своим правом?
      Подробнее об этом - в сюжете İTV:
      https://media.az/society/mozhno-li-ispolzovat-pensionnye-nakopleniya-do-vyhoda-na-pensiyu
        • Like
      • 54 replies
    • AstraZeneca признала, что ее вакцина от COVID-19 может спровоцировать тромбоз
      Компания AstraZeneca признала, что ее вакцина против COVID-19 может вызвать редкое, но смертельное нарушение свертываемости крови.
      Фармацевтический гигант уже столкнулся с огромным количеством исков, поданных близкими тех, кто получил серьезные заболевания или умер в результате инъекции, сообщает Daily Mail.
      Отмечается, что юристы, представляющие десятки коллективных исков, говорят, что стоимость некоторых дел их клиентов может достигать 25 миллионов долларов (42,5 млн манатов), и настаивают на том, что вакцина фармацевтической фирмы является дефектным продуктом.
        Подчеркивается, что AstraZeneca в феврале признала, что ее вакцина может в очень редких случаях провоцировать состояние, называемое тромбозом с синдромом тромбоцитопении или TTS. Он может вызвать у пациентов образование тромбов, а также низкое количество тромбоцитов, что в некоторых случаях серьезно навредило тем, кто воспользовался вакциной, или даже привело к летальному исходу.
      Потенциальное осложнение было указано в качестве возможного побочного эффекта с момента выпуска вакцины, но признание AstraZeneca в феврале стало первым случаем, когда фармацевтический гигант сделал это в суде, сообщает Telegraph.
       
        • Facepalm
        • Confused
      • 452 replies
  • Recently Browsing   0 members, 0 guests

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