За последние 24 часа нас посетили 20155 программистов и 1604 робота. Сейчас ищут 1811 программистов ...

Проблема сабмита формы (Ajax or not Ajax)

Тема в разделе "JavaScript и AJAX", создана пользователем Neka, 11 апр 2010.

  1. Neka

    Neka Активный пользователь

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    Приветствую!
    Есть форма, и как у каждой уважающей себя формы есть тайп=сабмит на селф, как сделать так, чтобы если у юзверя есть JS, выполнялась Ajax-функция, если JS выключен, она сабмитилась привычным способом?
    Думаю что если в св-ве onSubmit="" прописать аякс, то юзверь, у которого JS включен, продублирует отправку формы 2мя перечисленными способами, или я ошибаюсь?
     
  2. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    На вскидку:
    Повесить на onSubmit(или на нажатие сабмита) JS функцию, которая реализует отправку AJAX'ом и возвращает false.
     
  3. Neka

    Neka Активный пользователь

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    Volt(220) Спасибо! Помогло
    Еще вопрос...=\
    Как выудить значение выбранного радио-батона? Нет, выудить как знаем...
    [js]
    function getCheckedValue(radioObj) {
    if(!radioObj)
    return "";
    var radioLength = radioObj.length;
    if(radioLength == undefined)
    if(radioObj.checked)
    return radioObj.value;
    else
    return "";
    for(var i = 0; i < radioLength; i++) {
    if(radioObj.checked) {
    return radioObj.value;
    }
    }
    return "";
    }
    [/js]

    [js]value = getCheckedValue(document.FormName.elements['r_buttons']);[/js]

    И все работает! Все прекрасно! в Mozilla FireFox... А вот Осел материца, грит document.FormName.elements['r_buttons'] есть null или не является обьектом при любом выбранном значении.

    Что ему не так?!?!?
     
  4. Neka

    Neka Активный пользователь

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    Аа... я ненавижу IE :mad:
    [js]
    function sendResult(data) {
    httpXml = createAjax();
    postData = "ajax=1&votea=" + data;
    ajaxGET(httpXml, "/myscript.php", postData);
    xmlHttp.onreadystatechange = serverResponse;
    return false;
    }

    function serverResponse() {
    if (httpXml.readyState == 4) {
    if (httpXml.status == 200) {

    ----> alert(httpXml.status); <---------

    document.getElementById("pnotvoted").innerHTML = httpXml.responseText;
    }
    }
    }
    [/js]
    Алертует 200, но httpXml.responseText - пуст! Скрипт /myscript.php вообще не запускается, т.к. в БД нет изменений! Как это все понимать (естественно все это творится в IE)?
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    это что? IE не везде innerHTML любит
     
  6. Neka

    Neka Активный пользователь

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    это див, где все скачет и меняецо в следствии аякс-извращений, дело в том, что alert(httpXml.responseText); не выдает ничего и (повторюсь) скрипт вообще не запускается от Ajax-функции, т.к. совершенно нет изменений в БД
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    если
    и не возвращаются значения, то почему должно вызываться событие onreadystatechange?
     
  8. Neka

    Neka Активный пользователь

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    Ага... оттрассировал ошибку
    в скрипте идет проверка на isset, т.е. скрипт-то вызывается, но вот значения не передаются!
    Возвращаясь к предыдущему вопросу:
    Как заставить IE поймать value нужного мне Radio-button?
    [js]
    sendResult(getCheckedValue(document.getElementsByName('votea')));
    [/js]
    ошибок у ИЕ не вызывает, но и значение не выуживает =\
     
  9. Neka

    Neka Активный пользователь

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    Он меня сводит с ума в прямом смысле!
    [js]alert(getCheckedValue(document.getElementsByName('votea')));[/js] выводит значение
    [js]sendResult(getCheckedValue(document.getElementsByName('votea')));
    function sendResult(data) {
    alert(data);
    httpXml = createAjax();
    ....
    }
    [/js] не выводит ничего! Аномалия? Т.е. значение не передается в функцию! Какого, так сказать, хрена?!?
     
  10. Neka

    Neka Активный пользователь

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    Я сошла с ума, тра-ля-ля-ля-ля, какая досада... (с)
    При переносе на сервак перестал работать JS. На локалхосте все норм. JS !!!
    Вот код моего онклика (напомню, на LH работает):
    HTML:
    1. onclick= "javascript: var val = getCheckedValue(document.getElementsByName('votea')); alert('!!!!');document.getElementById('p_button').innerHTML='<img src=\'http://www.proilim.ru/e_images/ajax-loader.gif\' style=\'border: 0px; display: block; margin: 0px auto; width: 20px; height: 20px;\' />'; sendResult(val, ".$pollArray['poll_id'].");"
    Да, немного большой, но суть в том, что алерта нет! =(
     
  11. Neka

    Neka Активный пользователь

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    Фух, это оказывается закэшировали *.js файл, проблему решил. Ну и окончательный вопрос (он легкий):
    Как и какой устанавливать charset header для аяксы? на Response, а не open
     
  12. Neka

    Neka Активный пользователь

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    Решил =) Все работает, все кул)
    Теперь буду использовать форум для постановок задач, типо органайзер :D
     
  13. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    JS работает с UTF, поэтому меньше всего проблем будем именно с таким контентом.

    Что касается постановок задач, то TRAC, Bugzilla, Redmine, Mantiss, JIRA

    А, ну и конечно отдельно плагин Mylyn для EclipsePDT/ZS