X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Передача данных между PHP и JavaScript
gaaarfild
gaaarfild
Topic Starter сообщение 10.1.2009, 23:53; Ответить: gaaarfild
Сообщение #1


Каким образом осуществляется передача данных между этими языками и как можно обеспечит доступ до данных и БД динамически, не перезагружая страницу?(Через JavaScript или AJAX).
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 11.1.2009, 23:48; Ответить: ZiTosS
Сообщение #2


из PHP в JavaScript:
1) При формировании страницы можно присваивать JS переменным значения PHP переменных.
Пример:
[php]......
<script type="text/javascript">

var param = <?php echo $param ?>; //JS переменная param получает значение PHP переменной $param

// Если Строка
var string = "<?php echo $string ?>";

//Если Массив
var array_array = new array(<?php implode(",", $array) ?>);

/*и так далее*/
</script>
.......[/php]

2) возвращаемые данные AJAX запроса. Можно вернуть просто текст, можно HTML, можно XML. Затем обработка с помощью JS ;)

3) Можно возвращать данные на основе AJAX в формате JSON
_http://ru.wikipedia.org/wiki/JSON
Очень удобная работа в JS

4)Передача данных по cookie. Но это очень примитивно и легко подменяемо.

из JavaScript в PHP:
1) Обычный POST или GET запрос в форме с скрытыми полями, значения присваиваются с помощью JS и форма отправляется на обработку PHP

2) С помощью AJAX запроса основанного на объекте xmlHttpRequest.
Данную тему рассматривали на форуме. Динамическое обновление. AJAX

как можно обеспечит доступ до данных и БД динамически, не перезагружая страницу?(Через JavaScript или AJAX).


JS - это клиентский, браузерный язык у него нет доступа к серверу, он работает на клиентской стороне, т.е. у пользователя на машине. Вывод одним JavaScript для динамического обновления не обойтись...
Нужно использовать Ajax в основе которого лежит объект JS xmlHttpRequest.

Вот возвращаем данные из БД с определённым ID

index.html
<html>
<head>
<script type="text/javascript" language="javascript">
function makeRequest(id_block) // функция Ajax запроса
{
var http_request = false; // переменная для хранения XMLHttpRequest объекта

if (window.XMLHttpRequest)
{
http_request = new XMLHttpRequest(); // Mozilla, Safari, ...
if (http_request.overrideMimeType)
{
http_request.overrideMimeType('text/html');
// Тип возвращаемого контента
}
}
else if (window.ActiveXObject)
{
try
{
http_request = new ActiveXObject("Msxml2.XMLHTTP"); // IE
} catch (e) {
try
{
http_request = new ActiveXObject("Microsoft.XMLHTTP"); // Opera
} catch (e) {}
}
}

if (!http_request) // Если объект не был создан
{
alert('Не вышло :( Невозможно создать экземпляр класса XMLHTTP ');
return false;
}

//присваеваем обработчику функцию для обработки возвращенного контента
http_request.onreadystatechange = function() { alertContents(http_request); }; //функция - обвёртка
http_request.open('GET', "./file.php?id="+id_block, true); //метод запроса, URL, асинхронность
http_request.send(null);
}

function alertContents(http_request)
{

if (http_request.readyState == 4) //Если состояние запроса = "Выполнено"
{
if (http_request.status == 200) //Если всё прошло удачно
{
//присваиваем элементу DIV с id=ajax возвращенный контент
document.getElementById('ajax').innerHTML = http_request.responseText;
} else {
alert('С запросом возникла проблема.');
}
}
}
</script>
</head>
<body>
<input id="id_block" type="text" name="id"><br/>
<input type="botton" value="Выдать данные" onClick="makeRequest(getElementById('id_block').value)"><br/><br/>
<div id="ajax">Блок из базы</div>
</body>
</html>


file.php
[php]/*Подключение к БД*/
..........................
if(isset($_GET['id']))
{
$query = "SELECT * FROM table WHERE id=".intval($_GET['id'])." LIMIT 1"; //Запрос к table
$res = mysql_query($query);
$array = mysql_fetch_array($res); //массив значений

//вывести $имя_миассива['имя_поля']
echo "pole1 = {$array['pole1']}, pole2 = {$array['pole2']}, ....., poleN = {$array['poleN']}";
}[/php]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 12.1.2009, 23:30; Ответить: gaaarfild
Сообщение #3


Я конечно почти ничего не понял, но буду пытаться разобраться. =)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 12.1.2009, 23:55; Ответить: ZiTosS
Сообщение #4


Читай! Дописал комментарии!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 20.1.2009, 14:51; Ответить: gaaarfild
Сообщение #5


Хорошо. Спасибо. Я разберусь.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
FordogeN
FordogeN
сообщение 28.1.2009, 2:19; Ответить: FordogeN
Сообщение #6


А все же я так и не понял - как сделать так, чтоб просто то, что внутри <div> или любого другого тега с подключенным скриптиком - просто обновилось... Как фрейм.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 28.1.2009, 21:39; Ответить: ZiTosS
Сообщение #7


По какому либо событию в JS мы меняем контент в элементе, для этого у блочных элементов есть атрибут innerHTML
.....
<!-- СОБЫТИЕ ПРИ НАЖАТИИ НА КНОПКУ (onClick) -->
<input type="button" onClick="newContent();" value="заменить контент">

<!-- ТО В ЧЁМ ЗАМЕНЯЕМ -->
<div id="newBlock">старый контент</div>
....
<script type="text/javascript">
function newContent()
{
/* Переменная нового контента */
var content = "новый контент";

/* В переменную myElement заносим адрес нашего блока по id=newBlock*/
var myElement = document.getElementById("newBlock");

/* Меняем контент с помощью атрибута innerHTML */
myElement.innerHTML = content;
}
</script>
....


Если что-то не понятно, напиши что именно ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 13.2.2009, 15:22; Ответить: gaaarfild
Сообщение #8


FordogeN
А ты скорее всего говоришь об AJAX. Javascript не обладает возможностью соединения с сервером. Работает только в браузере на компьютере.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 13.2.2009, 20:41; Ответить: ZiTosS
Сообщение #9


gaaarfild, неправильно ты сформулировал. JavaScript хоть и работает на стороне клиента, но обращение к серверу при асинхронном(синхронном) запросе мы выполняем именно на основе него. Другое дело что работу с сервером, возвращение данных выполняет технология AJAX основанная на JavaScript и XML(хотя контент можно возвращать и просто текстом).
Поэтому фраза
Javascript не обладает возможностью соединения с сервером

Категорически не верна. В JavaScript есть такой объект как xmlHttpRequest, который имеет возможность выполнять запрос.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 16.2.2009, 15:50; Ответить: gaaarfild
Сообщение #10


Все, заткнулся. =)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
14 yaroslav89 6538 13.3.2024, 23:16
автор: spoyer_ru
Открытая тема (нет новых ответов) ГОРЯЧИЕ FOREX|CRYPTO ЛИДЫ. БАЗЫ ДАННЫХ
[Чарджбек|Рекавери|Возврат]
9 Leado 3758 9.2.2024, 16:04
автор: baza0013
Открытая тема (нет новых ответов) Как вы сравниваете ТОП сайтов между собой?
5 noviktamw 5534 10.1.2024, 13:23
автор: wanessa
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3242 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1129 24.11.2023, 14:46
автор: alexey


 



RSS Текстовая версия Сейчас: 19.3.2024, 6:18
Дизайн