Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   Сочетание JavaScript+Python (https://javascript.ru/forum/library-toolkit-framework/2205-sochetanie-javascript-python.html)

!JAlex_ 19.11.2008 11:48

Сочетание JavaScript+Python
 
Здравствуйте
Опишу задачу: создать веб-приложение которое б выполняло выборку с передачей параметров из базы данных, хранящейся на сервере, по некоторому событию и очень желательно чтоб без перезагрузки страницы.
Вопросы:
1. возможно ли это реализовать с помощью JavaScript (у клиента) и с использованием серверной части на Python?
2. нужен ли jQuery у клиента?
3. Есть ли у кого какие-нибудь примеры кода (или ссылки на код) подобных задач?
4. Возможно ли сдесь обойтись без PHP?
Раньше никогда не использовал ни jQuery, ни Python :(
Только начинаю деятельность веб-программера

Kolyaj 19.11.2008 12:08

Цитата:

Сообщение от !JAlex_
1. возможно ли это реализовать с помощью JavaScript (у клиента) и с использованием серверной части на Python?

Да.

Цитата:

Сообщение от !JAlex_
2. нужен ли jQuery у клиента?

Необязательно.

Цитата:

Сообщение от !JAlex_
3. Есть ли у кого какие-нибудь примеры кода (или ссылки на код) подобных задач?

У Яндекса.

Цитата:

Сообщение от !JAlex_
4. Возможно ли сдесь обойтись без PHP?

Да.

Dmitry A. Soshnikov 19.11.2008 12:16

Цитата:

Сообщение от !JAlex_
1. возможно ли это реализовать с помощью JavaScript (у клиента) и с использованием серверной части на Python?

Да.

Можно "голый" Python на серверной стороне - PSP (Python Server Pages), когда код на Питоне встраивается в HTML. А можно использовать какой-нибудь фреймворк, например (популярный) Django.

В качестве клиента, естественно, JavaScript (тоже наиболее популярный сегодня для клиентского web-программирования). Хотя, в будущем, возможно, альтернативой будет также Python (некоторые уже имеют поддержку). Также можно чистый JavaScript, либо же использовать готовые решения и фреймворки (тот же jQuery, Prototype и т.д.)

Цитата:

Сообщение от !JAlex_
2. нужен ли jQuery у клиента?

Не обязательно. jQuery - это всего лишь фреймворк (набор оболочек, функций и прочей мишуры), "внутри" которого все тот же чистый JavaScript. Поэтому, среагировать на событие (например, нажатие на кнопку) и отправить Ajax запрос (а именно он Вам понадобится, если Вы хотите обратиться к серверу без перезагрузки страницы) можно и чистыми JavaScript методами.

Цитата:

Сообщение от !JAlex_
3. Есть ли у кого какие-нибудь примеры кода (или ссылки на код) подобных задач?

Дофига и больше. Поищите на этом сайте (в статьях есть неплохие примеры), в Google, и Википедии.

Цитата:

Сообщение от !JAlex_
4. Возможно ли сдесь обойтись без PHP?

Да. PHP - это серверный язык. Альтернативой ему может служить Python.

Цитата:

Сообщение от !JAlex_
Раньше никогда не использовал не jQuery, не Python

В виду популярности jQuery, есть огромное количество инфы с примерами (даже на русском). Так что - в поиск. Насчет Python'a - я думаю, Вам лучше взглянуть в сторону какого-нибудь фреймворка (тоже же Django, опять), хотя если у Вас не большой проект, то это будет тяжеловесное решение (с другой стороны, "чистый" Питон в виде PSP вообще мало распространен и не столь популярен).

Цитата:

Сообщение от !JAlex_
Только начинаю деятельность веб-программера

Успехов! ;)

Dmitry A. Soshnikov 19.11.2008 12:16

Kolyaj, Ы )) я дольше писал ) отвлекался, еще кофе ходил себе наливал =)

Kolyaj 19.11.2008 12:30

Ну у меня как бы анонс следующего сообщения, реклама так сказать :)

!JAlex_ 19.11.2008 12:48

Ок Спасибо ;)

Андрей Параничев 19.11.2008 16:25

Если проект небольшой, то можно использовать простенький python фреймворк web.py.
Я с ним немного работал, в целом осталось хорошее впечатление.

!JAlex_ 26.11.2008 14:38

Немного продвинулся вперед: научился отправлять запросы (с помощью XMLHttpRequest) от клиента серверу, на сервере накатал скрипт на Питоне, который отправляет клиенту ХТМЛ код И тут появился камень спотыкания :) : в IE6, а вот Opera упорно отказывается :-\
Вот функции, которыми создаю объект запроса и обработчик нажатия на кнопочку:
<script text='javascript'>     
    /**************** создание объекта xmlhttpRequest**************/
    function getreq(){
	var req;
	    if (window.XMLHttpRequest) 		//normal browser
	    {
		req = new XMLHttpRequest();
	    }
	    else if (window.ActiveXObject)  	//IE
	    {
		try {
		    req = new ActiveXObject('Mcxm12.XMLHttp');  //IE разных версий
		} catch (e) {}
		try{
		    req = new ActiveXObject('Microsoft.XMLHttp');
		} catch (e){}	
	    }
	return req;    
    }

/*выполнение запроса на сервер*/ 
    function onBut(){	
	var req = getreq();
        req.open("get","../cgi-bin/1.cgi",true);	
	if (req){
            req.onReadyStateChange=function(){/*туточки Опера спотыкается и не хочет продолжать работать (проверял alert'ами)*/
        	if (req.readyState == 4){                    	
        	alert(req.status);
        	    if (req.status == 200) {/*если находит заданный URL*/	
	        	alert(req.responseText);      	
    		    }    
    		}
    	      }
    	    req.send(null);/*отправляемые на сервер параметры*/            
        }
        else {
    	    alert ('some error with object REQUEST');
    	}
    }
</script>

Воспользовался описанием как создавать запросы тута: http://xmlhttprequest.ru/ И самое интересное, что там !!аналогичная!! функция, но данная функция в Опере работает и у них она ссылается на ПХП-файлик, а у меня на файл Питона %) Даю ссылочку на их внешний файл с их рабочей функцией example2(): http://xmlhttprequest.ru/xhr.js
Если можете помогите ПОЖАЛСТА :)

Dmitry A. Soshnikov 26.11.2008 15:24

Цитата:

Сообщение от !JAlex_
req.onReadyStateChange

регистр букв имеет значение, все буквы в данном случае должны быть маленькие - req.onreadystatechange

!JAlex_ 26.11.2008 15:56

Огромное СПАСИБО - теперь в Опере работает Я даже не подумал, что от регистра может зависеть работоспособность, т.к. javascript, вроде, регистронеразличающий язык Странновасто как-то...
Еще поутно вопросик возник: из-за чего выполнение запроса к серверу в Опере9 выполняется намного дольше чем в IE6 и это при том, еще никакие выборки не передаются клиенту??
Что с этим можно сделать?


Часовой пояс GMT +3, время: 19:26.