Форум на Kuban.ru (http://forums.kuban.ru/)
-   Веб-дизайн и программирование (http://forums.kuban.ru/f1030/)
-   -   Обновление select без перезагрузки страницы (http://forums.kuban.ru/f1030/obnovlenie_select_bez_perezagruzki_stranicy-6036896.html)

woo 27.08.2014 14:13

Обновление select без перезагрузки страницы
 
Здравствуйте.
Подскажите что дописать на js что бы обновление данных из php происходило без перезагрузки страницы. Читал что можно использовать ajax, но как его прикрутить незнаю.
Сам исходник:
<?
$c_gd_pr= 11;
$c_gd_pok= 22;
$c_ge_pr= 33;
$c_ge_pok= 44;
if ($_POST['br'] == 'glav')
$c_gd_pr= 11;
$c_gd_pok= 22;
$c_ge_pr= 33;
$c_ge_pok= 44;
**
if ($_POST['br'] == 'zap')
$c_gd_pr= 55;
$c_gd_pok= 66;
$c_ge_pr= 77;
$c_ge_pok= 88;
**
if ($_POST['br'] == 'gor')
$c_gd_pr= 99;
$c_gd_pok= 54;
$c_ge_pr= 67;
$c_ge_pok= 42;
**
?>
<form name="f_br" accept-charset="UTF-8" action="" method="post">
<select name="br" onchange="this.form.submit();">
<option value= "glav" selected="selected" <? if ($_SESSION['br'] == 'glav')
{echo "selected='selected'";**?>>1</option>
<option value= "zap"<? if ($_SESSION['br'] == 'zap')
{echo "selected='selected'";**?>>2</option>
<option value= "gor"<? if ($_SESSION['br'] == 'gor')
{echo "selected='selected'";**?>>3</option>
</select>
</form>

40KHYTbIU 27.08.2014 14:47

1. Делаешь отдельную пхп-страницу, которая будет тебе возвращать данные для JS лучше JSON. Гугли PHP JSON
2. Станица с отображением данных шлет AJAX на первую, парсит и обновляется. Почитать про JQuery AJAX.

2s mode 27.08.2014 14:49

Отправляешь ajax на какую-нибудь станицу, например getlist.php. На странице getlist.php формируешь массив и делаешь json_encode. Получает ответ через тот же ajax делаешь parseJSON и делаешь с данными все что тебе нужно.

woo 27.08.2014 16:40

Спасибо, попробую.

fanatnascar 27.08.2014 16:52

Можно и без json, допскрипт сразу генерит html, который засовывается в div. Jquery сильно экономит силы.

woo 27.08.2014 17:02

доп скрипт может и генерит, только я не знаю что это за скрипт)

woo 27.08.2014 20:22

может кто подскажет, как реализовать: if ($_POST['br'] == 'glav')
$c_gd_pr= 11;
$c_gd_pok= 22;
$c_ge_pr= 33;
$c_ge_pok= 44;
**
на js?

40KHYTbIU 27.08.2014 22:52

6-woo >
Судя по коду, вы просто меняете значение каких то переменных в зависимости от селекта и шо вы хотите в итоге?

woo 27.08.2014 23:05

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

woo 27.08.2014 23:10

как я понял нужно
$json_string='**"glav":["33","44","55","66"]** ';
$obj=json_decode($json_string);
и вывести в нужных местах echo $obj->glav[0];echo $obj->glav[1 ]; и т.п
но мне нужны группы при смене в селекте.
Наверно нужно обернуть в функцию и в value в селекте вбить имя функции...
я хоть немного в теме?)

woo 27.08.2014 23:12

там не звездочки, чета сайт запорол знаки

40KHYTbIU 28.08.2014 00:15

В смысле в коде? Может тебе тогда и пхп не нужен?
Например читать цифры из CSV-файла на сервере JS и формировать селект.

40KHYTbIU 28.08.2014 00:25

Из закрома

<script src="https://code.jquery.com/jquery-2.1.0.min.js" type="text/javascript"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-csv/0.71/jquery.csv-0.71.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() **
$.ajax(**
type: "GET",
url: "data.csv",
dataType: "text",
success: function(data) {processData(data);**
**);

function processData(allText) **
var mySelect = $('#my-select');

var dataFile = $.csv.toArrays(allText, {separator:";"**);
for (var i = 0; i < dataFile.length; i++) **
var line = $('<tr></tr>');
var lineNum = i + 1;
$('<option data-row-num="'+i
+'" data-field-0="'+dataFile[i][0]
+'" data-field-1="'+dataFile[i][1]
+'" data-field-2="'+dataFile[i][2]
+'" data-field-3="'+dataFile[i][3]+'">'
+dataFile[i][0]+'</option>').appendTo(mySelect);
**
**
</script>

40KHYTbIU 28.08.2014 00:36

** - это открывающаяся фигурная скобка

И перед последней фигурной,т.е. после FOR, надо повесить функцию на изменении селекта:

mySelect.change(function()**
//ТВОРИ ДОБРО ЗДЕСЬ!!!
**);

fanatnascar 28.08.2014 09:21

Да.. А я помню, лет 6-7 назад, нагуглил пример с первого раза)

woo 28.08.2014 15:22

спасибо)
пхп да, не обязателен
просто в нем я сообразил как написать, а в js нет.
я сегодня вечером попробую применить
а пользователь сможет в этом файле изменять значения?

woo 28.08.2014 15:24

мб не так эстетично, но можно на одной странице все делать...т.е. не вынося в файл

woo 29.08.2014 09:23

Тема закрыта.


Текущее время: 08:43. Часовой пояс GMT +3.