|
Z-MODe ↓
|
 |
|
21 Август, 2008, 12:11:17
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: 1
Сообщений: 201 Сила слова: 0.5
|
Положение очень печальное.. заказчику на сайте как оказалось надо калькулятор аналогичный(точно такойже) как и у
http://autoins.ru/ru/osago/calculator/
Но воровать скрипты у актис сюстема как то не хочется.. к тому же всего и не сваруешь.
Аякс знаю только теоретически.
Как получать текущее значение формы я думаю смогу нагуглить, но было бы не плохо если бы всё таки расказали или дали ссылки чё покурить.
Основная загвоздка в том, как сделать вот этот выбор населённого пункта, я понимаю что надо составить аяксовый запрос на сервер, сервер на него пришлёт ответ и собственно всё, но как потом этот ответ распарсить?
Т.е. как вообще составить правильный запрос на сервер? и как на пыхе его принять и отправить обратно?
если не лень разжуйте пожалуйста этот калькулятор, заранее очень благодарен, просто и сроков нету самому разбираться, тестить и т.д.
|
|
|
|
|
Записан
|
Некоторые программисты на столько суровы, что сохраняют логи аськи на баше...
|
|
|
|
sap ↓
|
 |
|
21 Август, 2008, 01:23:59 , спустя 1 час 12 минут 42 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Жмурики Карма: 40
Сообщений: 2697 Сила слова: 1.48
|
Калькулятор разжевывать не буду, но сами принципы попробую объяснить.
1. Берешь либу для работы с аджаксом :) (простейший вариант — JsHttpRequest, Мавру просьба не материться:))).
2. Дальше на примере, вот у меня эта штука сделана как раз аджаксом, объясняю:
<script src="/JsHttpRequest/JsHttpRequest.js"></script>
<script language="javascript" type="text/javascript">
<!--
function encode_email() {
q = document.getElementById('email').value; // получаем значение текстового поля email
if (q != "") {
JsHttpRequest.query(
"/JsHttpRequest/backend_encode_email.php", // обработчик
{ "q": q }, // переменные, которые нужно передать в обработчик
function(result) { // функция, которая выполняется после того, как отработал обработчик
document.getElementById('emailresult').innerHTML = result["r"]; // впихиваем в див с ид emailresult подготовленный в обработчике код
},
false
);
} else {
document.getElementById('emailresult').innerHTML = '<b><font color="red">Вы не ввели e-mail адрес</font></b>';
} return false;
}
//-->
</script>
А в обработчике:
require_once "JsHttpRequest.php";
$JsHttpRequest =& new JsHttpRequest ("windows-1251");
$email = $_REQUEST['q'];
if (! preg_match ('/^((\S+)@([a-z0-9-]+)(\.)([a-z]{2,4})(\.?)([a-z]*)(,?)( ?))+$/i', $email)) {
$data = '<b><font color="red">Неверный формат e-mail адреса</font></b>';
} else {
$data = '<p><b>Первый способ:</b><div class="code">'.method_1 ($email). '</div><p>
<p><b>Второй способ:</b><div class="code">'.method_2 ($email). '</div><p>
<p><b>Третий способ:</b><div class="code">'.method_3 ($email). '</div><p>
<p><b>Четвертый способ:</b><div class="code">'.method_4 ($email). '</div><p>';
}
$_RESULT = array (
"r" => $data,
);
3. Все :)
|
|
|
|
|
Записан
|
|
|
|
|
Z-MODe ↓
|
 |
|
21 Август, 2008, 02:56:39 , спустя 1 час 32 минуты 40 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: 1
Сообщений: 201 Сила слова: 0.5
|
Такс... спасибо большое.. в общих чертах понятно..
Т.е. я на пыхе отправляют массив, а яваскриптом его иннерХТМЛю? а не надо на жс проверки какие нить ставить типа пришёл ли ответ или нет?
И сразу вопрос, в том калькуляторе, после выбора региона в остальных появляется "идёт загрузка", как такую вещчь получить?
У мну с этим просто вообще трабл=( на ЖС ничё толком не писал..
|
|
|
|
|
Записан
|
Некоторые программисты на столько суровы, что сохраняют логи аськи на баше...
|
|
|
|
adw0rd ↓
|
 |
|
21 Август, 2008, 09:01:10 , спустя 6 часов 4 минуты 31 секунду
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17610 Сила слова: 1.67
|
а не надо на жс проверки какие нить ставить типа пришёл ли ответ или нет?
Надо. Прочти внимательно, еще это и это.
|
|
|
|
|
Записан
|
|
|
|
|
sap ↓
|
 |
|
21 Август, 2008, 10:01:56 , спустя 1 час 46 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Группа: Жмурики Карма: 40
Сообщений: 2697 Сила слова: 1.48
|
И сразу вопрос, в том калькуляторе, после выбора региона в остальных появляется "идёт загрузка", как такую вещчь получить?
В начале функции (до запроса бекенду) выводишь див с «идет загрузка», после получения результата его убираешь (document.getElementById(id).style.display = 'none';).
|
|
|
|
|
Записан
|
|
|
|
|
CTAPbIu_MABP ↓
|
 |
|
21 Август, 2008, 11:57:34 , спустя 1 час 55 минут 38 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
мавр
Группа: в ухо Карма: не нужна
Сообщений: 5187 Сила слова: 1.81
|
Мавру просьба не материться
бля, вот хуле сразу мавер?!
возьми в пример jQuery и мавер будет на тя малицца
|
|
|
|
|
Записан
|
java.lang.OutOfMemoryError
|
|
|
|
Z-MODe ↓
|
 |
|
21 Август, 2008, 11:04:49 , спустя 11 часов 7 минут 15 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: 1
Сообщений: 201 Сила слова: 0.5
|
А подскажите пожалуйста, как мне забрать валуе с опшинов у селекта? обращаться к айдишнику селекта?
И смогу ли я сделать иннер.хтмл в селект по айдишнику, т.е. я как думаю, сделать так же переменную $data как sap показал, со всеми опшионами
$data = <option> </option>;
$data .= <option> </option>;
$data .= <option> </option>;
....
и потом сделать
document.getElementById('select').innerHTML = result["r"];
получится ли так?
т.е. что бы избежать цикла по массиву на ЖС.
И все функции в яваскрипте на сколько я знаю срабатываю по определённому эвенту, как мне запустить допустим функцию result() сразу как пришёл ответ?
|
|
|
|
|
Записан
|
Некоторые программисты на столько суровы, что сохраняют логи аськи на баше...
|
|
|
|
adw0rd ↓
|
 |
|
21 Август, 2008, 11:17:17 , спустя 12 минут 28 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
|
|
|
Z-MODe ↓
|
 |
|
21 Август, 2008, 11:43:49 , спустя 26 минут 32 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: 1
Сообщений: 201 Сила слова: 0.5
|
Чужое брать конечное не хорошо, но завтра надо сдать заказчику проект, понял что надо ставить тучу условий в этом калькуляторе. Более менее разобравшись сейчас , их ЖСка показалась не столь сложной, трабл всё равно остался. гляньте пожалуйста:
http://autoins.ru/media/inc/calc-new.js
как я понимаю эта функиция и отправляет запрос:
function useAJAX ( url )
{
if( url.match ( new RegExp ( "^[a-z]+://" , "i" ) ) ) return null;
if( navigator.userAgent.indexOf ( "Opera" ) != -1 ) return null;
if( isStupidIEVersion () ) return null;
var http_request = null;
if ( window.XMLHttpRequest )
{
http_request = new XMLHttpRequest ();
if( http_request.overrideMimeType ) http_request.overrideMimeType ( "text/xml" );
}
else if ( window.ActiveXObject ) try { http_request = new ActiveXObject ( "Microsoft.XMLHTTP" ); } catch ( e ) {}
if( http_request )
{
http_request.onreadystatechange =
function()
{
if ( http_request.readyState == 4 )
{
// everything is good, the response is received
if ( http_request.status == 200 )
{
// perfect!
eval( http_request.responseText );
}
else
{
// there was a problem with the request,
// for example the response may be a 404 (Not Found)
// or 500 (Internal Server Error) response codes
//alert( http_request.status )
}
} else
{
// still not ready
//alert( "still not ready" );
}
}
// Remove possible junk from response.
http_request.open ( "GET" , url , true );
http_request.send ( null );
}
return http_request;
}
щас возникла мысль что проще подменить серверную часть чем клиентскую..
а используется эта функция непосредственно в функции: function performLoading( select )
(код не выкладываю что бы не засорять)
а добавляется в селект при помощи функции:
function setSelectContents( selectObj , aRecord , startingWith )
А вопрос в том правильно ли я всё разобрал?
и в функцию useAJAX надо передавать юрл, с гет переменными, которые уйдут на сервак для дальнейшей обработки?
|
|
|
|
|
Записан
|
Некоторые программисты на столько суровы, что сохраняют логи аськи на баше...
|
|
|
|
adw0rd ↓
|
 |
|
21 Август, 2008, 11:58:18 , спустя 14 минут 29 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17610 Сила слова: 1.67
|
Z-MODe, хочешь успеть до утра и без трабл? Мой тебе совет, заюзай фреймворк типа JQuery, Prototype или JsHttpRequest для AJAX'a.
|
|
|
|
|
Записан
|
|
|
|
|
CTAPbIu_MABP ↓
|
 |
|
21 Август, 2008, 11:58:32 , спустя 14 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
мавр
Группа: в ухо Карма: не нужна
Сообщений: 5187 Сила слова: 1.81
|
порадовала строка
if( navigator.userAgent.indexOf( "Opera" ) != -1 ) return null;
|
|
|
|
|
Записан
|
java.lang.OutOfMemoryError
|
|
|
|
Z-MODe ↓
|
 |
|
22 Август, 2008, 12:01:55 , спустя 3 минуты 23 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
Карма: 1
Сообщений: 201 Сила слова: 0.5
|
adw0rd, Шарил бы я в яваскрипте. я изначально думал калькулятор сделать чисто серверный.. а тут ему вот как там надо.. а я в ЖС вааще ноль.. к тому же там только в одном месте надо заяксить, города эти.. а на остальное там реально куча условий просто.. эти условия пока соображу как.. ещё больше времени думаю пройдёт=(
|
|
|
|
|
Записан
|
Некоторые программисты на столько суровы, что сохраняют логи аськи на баше...
|
|
|
|
CTAPbIu_MABP ↓
|
 |
|
22 Август, 2008, 12:06:08 , спустя 4 минуты 13 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
мавр
Группа: в ухо Карма: не нужна
Сообщений: 5187 Сила слова: 1.81
|
|
|
|
|
|
Записан
|
java.lang.OutOfMemoryError
|
|
|
|
adw0rd ↓
|
 |
|
22 Август, 2008, 12:08:12 , спустя 2 минуты 4 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17610 Сила слова: 1.67
|
Z-MODe, еще раз говорю: в случае с JsHttpRequest есть обширная документация на РУССКОМ языке.
Без знаний JavaScript можно с легкостью ей (JsHttpRequest) пользоваться. Что не скажешь о том коде, на который ты привел ссылку.
|
|
|
|
|
Записан
|
|
|
|
|
adw0rd ↓
|
 |
|
22 Август, 2008, 12:09:34 , спустя 1 минуту 22 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17610 Сила слова: 1.67
|
CTAPbIu_MABP, if( isStupidIEVersion() ) return null; :)
|
|
|
|
|
Записан
|
|
|
|
|