Joomla 4. Компонент K2 и форк K2ForJ4 (18 янв 2024)

Если вас, как и меня, достало выслушивать (вычитывать) бесконечные обещания разработчика K2 опубликовать версию компонента K2 под Joomla 4 (без чего невозможно реализовать апгрейд from Joomla 3 to Joomla 4) - воспользуйтесь форком K2ForJ4. Который в данный момент установлен и без каких-либо проблем работает на этом веб-сайте.

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

Передаем данные из js в php. Ajax

Больше
9 года 11 мес. назад - 6 года 11 мес. назад #1 от Aleksej
Хотелось бы предложить читателям блога небольшой экскурс в мир js и php; целью чего и явилось написание статьи
Снова Maxmind, снова погодные информеры, и снова ajax . Собственно, это уже цикл статей, в котором на примере обращения к нескольким различным API сделана попытка рассказать и пояснить наглядными примерами, а также живыми демками - некоторые аспекты работы js- и php- скриптов. Разумеется, ряд этот очень пока неполон; но и предназначены эти рассказы сугубо для начинающих программеров.






В частности, рассказ о погодном информере на ajax-e призван проиллюстрировать возможность передачи значения переменных из js… который, разумеется, выполним сугубо на вашем локальном компьютере... в массив php, что возможно, для абсолютного большинства пользователей, только на web-сервере. За живыми примерами, повторюсь, вам - по приведенной выше ссылке, welcome. Здесь же опубликую лишь еще один скрипт, который вы без проблем можете скопипастить и без помех вволю потренироваться c ним на своем серваке.. как показывает Google, вопросы безопасной передачи данных из js в php как нельзя более актуальны в Сети, и наш форум - далеко здесь не исключение. Это как раз тот момент, когда копипастить можно и нужно... пробуйте. "Как сделать??" - а вот так, как показано ниже.


test.php
Code:
<?php if (! empty($_REQUEST)){// Process AJAX request file_put_contents('log', print_r($_REQUEST, true)); echo('Answer from server. Got data: ' . print_r($_REQUEST, true)); // Return data } else{ ?> <html> <head> <title>Ajax base example</title> <script language="JavaScript" src="http://j.maxmind.com/app/geoip.js"></script> <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.0.min.js"></script> </head> <body> <script language="JavaScript">document.write(geoip_latitude());</script> <script language="JavaScript">document.write(geoip_longitude());</script> <div id="results"></div> <script language='JavaScript'> $.ajax({ type: "GET", url: "test.php", data: { geoip_latitude: geoip_latitude(), geoip_longitude: geoip_longitude() }, success: function(html){ alert(html); $("#results").append(html); } }); </script> </body> </html> <?php } ?>
Последнее редактирование: 6 года 11 мес. назад пользователем p.rishard.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Dev banner 2
Больше
9 года 11 мес. назад - 9 года 11 мес. назад #2 от tekumze
tekumze ответил в теме Передаем данные из js в php. Ajax
привет. а ajax здесь обязателен, имею в виду в информере?
скрипт из этого топика не работает.

P.S. виноват, работает. eсли назвать его test.php…
Последнее редактирование: 9 года 11 мес. назад пользователем tekumze.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 11 мес. назад - 9 года 11 мес. назад #3 от Aleksej
Aleksej ответил в теме Передаем данные из js в php. Ajax

tekumze пишет: работает. eсли назвать его test.php…


Да, разумеется.
Либо обозвать как угодно, но изменить, соответственно, и эту строчку:

Code:
url: "test.php",


tekumze пишет: привет. а ajax здесь обязателен, имею в виду в информере?



Нет, не обязательно. Что мешает вам, допустим, первый из опубликованных скриптов изменить таким образом, чтобы он указывал не на web (т.е. не на World Weather Online), а на, предположим, script.php ? Сперва будет открываться одна страничка, затем - другая; все это вкупе может выглядеть примерно так. Пожалуйста, без ajax:


test.php
Code:
<script language="JavaScript" src="http://j.maxmind.com/app/geoip.js"></script> <script language="JavaScript">document.write(geoip_latitude());</script> <script language="JavaScript">document.write(geoip_longitude());</script> <?php if (isset($_GET['lat']) AND isset($_GET['lon'])) { } else { ?> <script language='javascript'> location.href="script.php?lat=" + geoip_latitude() + "&lon=" + geoip_longitude(); </script> <? }

script.php
Code:
<?php if (isset($_GET['geoip_latitude']) AND isset($_GET['geoip_longitude'])) { } echo "<br>"; $loc_array = array($_GET['lat'],$_GET['lon']); $api_key="vash_api_key"; $num_of_days=1; $loc_safe = array(); foreach($loc_array as $loc){ $loc_safe[] = urlencode($loc); } $loc_string=implode(',', $loc_safe); $basicurl = sprintf('http://api.worldweatheronline.com/free/v1/weather.ashx?key=%s&q=%s&num_of_days=%s', $api_key, $loc_string, intval($num_of_days)); $xml_response = file_get_contents($basicurl); $xml = simplexml_load_string($xml_response); $ss = array(); foreach ($xml[0] as $name => $val) { foreach ($val as $name1 => $val1) { $ss[$name1] = $val1; } } echo '<img src="' . $xml->weather->weatherIconUrl . '"/>'; echo "<br>"; echo "<br>"; echo $ss["date"]; echo "<br>"; echo "Температура {$ss["temp_C"]} С"; echo "<br>"; echo "Мин. температура сегодня {$ss["tempMinC"]} С*"; echo "<br>"; echo "Макс. температура сегодня {$ss["tempMaxC"]} С*"; echo "<br>"; echo "Скорость ветра {$ss["windspeedKmph"]} м/сек"; echo "<br>"; echo "Направление ветра {$ss["winddirection"]}"; echo "<br>"; echo "Пасмурно {$ss["cloudcover"]}%"; echo "<br>"; echo "Давление {$ss["pressure"]} mb"; echo "<br>"; echo "Влажность {$ss["humidity"]}%"; echo "<br>"; echo "Видимость {$ss["visibility"]} км"; echo "<br>"; echo $ss["weatherDesc"]; ?>
Последнее редактирование: 9 года 11 мес. назад пользователем Aleksej.
Спасибо сказали: tekumze

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 11 мес. назад - 9 года 11 мес. назад #4 от serge
serge ответил в теме Передаем данные из js в php. Ajax
For example, приведу старый классический пример скрипта, вытаскивающего из вашего браузера разрешение экрана и передающего затем данные на сервак, в php. Если скопируете скрипт на свой web-сервер и откроете затем в браузере - увидите на страничке соответствующие значения.


Code:
<?php // проверяем существование переменных $width и $height if (isset($_GET['width']) AND isset($_GET['height'])) { // если переменные существуют, то выводим полученные значения на экран echo 'Ширина экрана: ' . $_GET['width'] . "<br />\n"; echo 'Высота экрана: ' . $_GET['height'] . "<br />\n"; } // если переменные не существуют, то выполняем следующее else { // PHP сгенерирует код JavaScript, который обработает браузер // пользователя и передаст значения обратно PHP-скрипту через протокол HTTP echo "<script language='javascript'>\n"; echo " location.href=\"${_SERVER['SCRIPT_NAME']}?${_SERVER['QUERY_STRING']}" . "width=\" + screen.width + \"&height=\" + screen.height;\n"; echo "</script>\n"; } ?>

А я смогу! - А поглядим! - А я упрямый!
Последнее редактирование: 9 года 11 мес. назад пользователем serge.
Спасибо сказали: tekumze

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
9 года 11 мес. назад #5 от Aleksej
Aleksej ответил в теме Передаем данные из js в php. Ajax
Да, и если что-то не идет - не отчаивайтесь.
Включите лог в php-файле; скажем, так:

Code:
$file = 'log.txt'; file_put_contents('log', $_REQUEST);

Далее смотрите log-файл. Увидите переданные данные... ну или - не увидите. :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
6 года 11 мес. назад #6 от serge
serge ответил в теме Передаем данные из js в php. Ajax
Пример использования технологии ajax, основанный на фреймворке Prototype ( в верхней части скрипта подключен, как видите, prototype.js). Обработчик возвращает все что захотите: print_r, echo, любой инициированный php HTML. Вообще же отличная обзорная статья на ibm.com , посвященная различным способам использования ajax, по ссылке.

index.html
Code:
<html> <head> <script src="prototype.js"></script> </head> <body> <form id="myform"> <table> <tr><td>First</td><td><input type="text" name="first"></td></tr> <tr><td>Last</td><td><input type="text" name="last"></td></tr> <tr><td>Email</td><td><input type="text" name="email"></td></tr> </table> <input type="button" onclick="dosubmit()" value="Submit"> </form> <div id="result" style="padding:5px;"> </div> <script> function dosubmit( ) { new Ajax.Updater( 'result', 'add.php', { method: 'post', parameters: $('myform').serialize() } ); $('myform').reset(); } </script> </body> </html>


add.php
Code:
Thanks <?php echo( $_POST['first'] ) ?> <?php echo( $_POST['last'] ) ?>!

А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
6 года 11 мес. назад #7 от serge
serge ответил в теме Передаем данные из js в php. Ajax
Часы на ajax, кому надо. B)

index.html
Code:
<html> <head> <meta http-equiv="Content-Type" content="text/html; Charset=UTF-8"> <script type="text/javascript" src="jquery.js"></script> </head> <body> <div id="content"></div> <script> function show() { $.ajax({ url: "time.php", cache: false, success: function(html){ $("#content").html(html); } }); } $(document).ready(function(){ show(); setInterval('show()',1000); }); </script> </body> </html>

time.php
Code:
<?php echo date("H:i:s"); ?>

Только jquery.js не забудьте, без него не заработает.

А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 года 7 мес. назад #8 от evgenij
evgenij ответил в теме Передаем данные из js в php. Ajax

serge пишет: For example, приведу старый классический пример скрипта, вытаскивающего из вашего браузера разрешение экрана и передающего затем данные на сервак, в php. Если скопируете скрипт на свой web-сервер и откроете затем в браузере - увидите на страничке соответствующие значения.


Лучше определять размер окна:
Code:
<script> function alertSize() { var myWidth = 0, myHeight = 0; if( typeof( window.innerWidth ) == 'number' ) { //Non-IE myWidth = window.innerWidth; myHeight = window.innerHeight; } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { //IE 6+ in 'standards compliant mode' myWidth = document.documentElement.clientWidth; myHeight = document.documentElement.clientHeight; } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { //IE 4 compatible myWidth = document.body.clientWidth; myHeight = document.body.clientHeight; } window.alert( 'Width = ' + myWidth ); window.alert( 'Height = ' + myHeight ); } </script> <p>Test it here: <a href="javascript:alertSize();">get the inner dimensions of this window</a>.</p>

Источник: www.howtocreate.co.uk/tutorials/javascript/browserwindow

Have a lot of fun!
Спасибо сказали: serge

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
5 года 7 мес. назад #9 от serge
serge ответил в теме Передаем данные из js в php. Ajax
evgenij, отличная статья. Получение смещения прокрутки в горизонтальном и вертикальном направлениях, оттуда же:
Code:
function getScrollXY() { var scrOfX = 0, scrOfY = 0; if( typeof( window.pageYOffset ) == 'number' ) { //Netscape compliant scrOfY = window.pageYOffset; scrOfX = window.pageXOffset; } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) { //DOM compliant scrOfY = document.body.scrollTop; scrOfX = document.body.scrollLeft; } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) { //IE6 standards compliant mode scrOfY = document.documentElement.scrollTop; scrOfX = document.documentElement.scrollLeft; } return [ scrOfX, scrOfY ]; }

Берем на вооружение, пригодится.

А я смогу! - А поглядим! - А я упрямый!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Работает на Kunena форум