За последние 24 часа нас посетили 17999 программистов и 1577 роботов. Сейчас ищут 904 программиста ...

Ajax и Post запросы.

Тема в разделе "JavaScript и AJAX", создана пользователем antiKILLER, 28 фев 2009.

  1. antiKILLER

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

    С нами с:
    6 май 2008
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Заречный, Пенз.обл.
    Здравствуйте.
    Итак, нужна помочь по использованию аякса и пост запросов.
    Сейчас я делаю это так:
    Код (Text):
    1. var xmlHttp;
    2. function startAJAX(url,func,methood,data)
    3. {
    4.  if (methood!="POST" && methood!="GET") methood="GET";
    5.  xmlHttp=GetXmlHttpObject();
    6.  if (xmlHttp==null)
    7.  {
    8.   alert ("Ваш браузер не поддерживает технологию AJAX!")
    9.   return false;
    10.  }
    11.  xmlHttp.onreadystatechange=func;
    12.  xmlHttp.open("POST",url);
    13.  xmlHttp.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
    14.  xmlHttp.send('a=5&b=4');
    15. }
    В переменной url находится адрес скрипта-обработчика. И, в данном случае в этом скрипте обрабочика всего одна строчка:
    print_r($_POST);
    При этом, если я всё правильно понимаю, скрипт должен возвращать массив из переменых "а" и "b", со значениями 4 и 5 соотвественно. Однако, скрипт возвращает пустой массив. В случае, если используется GET, то всё работает и соотвествующий массив имеет нужные значения.
    Мне нужен именно POST запрос, т.к. в "data" будет содержаться большие по обьёму данные (но только текстовые)
    Так подскажите, как же мне всё-таки передать через AJAX данные POST запросом. Мне хватит всего небольшого примера, где просто передаётся как здесь например, две небольшие переменные. Но меня время очень поджимает, т.к. до понедельника мне нужно этот полностью готовый скрипт и ещё несколько, поэтмоу времени на поиск катастрофически нету((

    Пытался ещё сделать через JsHttpRequest.query, как описано здесь: http://dklab.ru/lib/JsHttpRequest/
    Но таким методом у меня ничего не получилось, даже вернуть пустой массив. а именно я использовал такую функцию и в ней не срабатывает даже alert('wwwww'):
    Код (Text):
    1. JsHttpRequest.query(
    2. url,
    3. { qwe: 'ewew' },
    4. function qwe() {
    5.                  alert('wwwww');
    6.                  },
    7. true
    8. );
    Подскажите пожалуйста, оч надо))
    Заранее премного благодарен!
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
  3. antiKILLER

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

    С нами с:
    6 май 2008
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Заречный, Пенз.обл.
    440Hz,
    Может быть я что-то не понимаю, но чем это может помочь?
    Сам аякс я нашёл только в третьем примере, но там метод GET, а с нгим у меня всё нормально. Мне нужен POST.
     
  4. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    научиться работать с примерами. и делать как положено.

    выложи все исходнки? посмотрим что атм у тебя.
     
  5. antiKILLER

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

    С нами с:
    6 май 2008
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Заречный, Пенз.обл.
    На странице есть талблица такого вида:
    HTML:
    1.  
    2. <table width="100%" border="0" cellspacing="1" cellpadding="3" id="goodstable">
    3.       <tr>
    4.         <td align="center" bgcolor="#edf2f7">Название товара</td>
    5.         <td align="center" bgcolor="#edf2f7">Цена</td>
    6.         <td align="center" bgcolor="#edf2f7">%</td>
    7.         <td align="center" bgcolor="#edf2f7">Комментарий</td>
    8.         <td align="center" bgcolor="#edf2f7">Сохранить</td><td align="center" bgcolor="#edf2f7">Удалить</td>
    9.       </tr>
    10.       <tbody id="items">
    11.       <tr>
    12.          <td align="center"><input value="" id="name5"></td>
    13.          <td align="center"><input value="" id="cost5"></td>
    14.          <td align="center"><input value="" id="persent5"></td>
    15.          <td align="center"><textarea id="comment7"></textarea></td>
    16.          <td align="center"><img src="/admin/icon/save.gif" onclick="SaveKonkyrentGood('5');" id="img5"></td>
    17.          <td align="center"><img src="/admin/icon/del.gif" onclick="DoGoods('5','del','firmgoodskonkyrent');"></td>
    18.       </tr>
    19.       <tr>
    20.          <td align="center"><input value="" id="name7"></td>
    21.          <td align="center"><input value="" id="cost7"></td>
    22.          <td align="center"><input value="" id="persent7"></td>
    23.          <td align="center"><textarea id="comment7"></textarea></td>
    24.          <td align="center"><img src="/admin/icon/save.gif" onclick="SaveKonkyrentGood('7');" id="img7"></td>
    25.          <td align="center"><img src="/admin/icon/del.gif" onclick="DoGoods('7','del','firmgoodskonkyrent');"></td>
    26.       </tr>
    27.       </tbody>
    28.     </table>
    В этой таблице, цифра у названия - это id записи в БД.

    Вот фрагмент файла с java-скрипт функциями:
    [js]
    var xmlHttp;
    function startAJAX(url,func,methood)
    {
    if (methood!="POST" && methood!="GET") methood="GET";
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null)
    {
    alert ("Ваш браузер не поддерживает технологию AJAX!")
    return false;
    }
    xmlHttp.onreadystatechange=func;
    var value='wwwwweee';
    xmlHttp.open(methood,url);

    xmlHttp.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");

    //xmlHttp.send( { q: value } );
    xmlHttp.send('a=5&b=4');

    //alert(url);
    }

    function SaveKonkyrentGood(id)
    {
    var url="/ajax/sendtovars.php";
    var func=save;
    var methood="POST";

    //startAJAX(url,func,methood);

    JsHttpRequest.query(
    url,
    { qwe: 'ewew' },
    function qwe() {
    /*if(responseText) {
    eval(responseText);
    return 0;
    }*/
    alert('wwwww');
    /* var html = responseJS.html;
    if(html) {
    document.getElementById('mainplace').innerHTML = html;
    document.getElementById('mainplace').style.visibility='';
    }

    var place = responseJS.place;
    if(place && place instanceof Object) {
    for (var key in place) {
    var val = place[key];
    if(val instanceof Function) continue;
    document.getElementById(key).innerHTML = val;
    }
    }*/
    },
    true
    );
    alert('qq');
    }

    function save()
    {
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    {
    alert(xmlHttp.responseText);
    }
    }
    [/js]

    А вот сам файл sendtovars.php
    PHP:
    1.  
    2. print_r($_POST);
    3.  
    Здесь пока нет передачи параметров из полей. Но проблема пока в том, чтобы передать хоть какие-то данные из java скрипта в рнр файл имено методом POST. С методом GET проблем нет
     
  6. unicross

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

    С нами с:
    14 янв 2009
    Сообщения:
    194
    Симпатии:
    0
    Код (Text):
    1. xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
     
  7. antiKILLER

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

    С нами с:
    6 май 2008
    Сообщения:
    16
    Симпатии:
    0
    Адрес:
    Заречный, Пенз.обл.
    unicross
    Большое спасибо... проблема в заголовке значит была. Теперь массив $_POST не пустой.
    громное спасибо, проблема решена))
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    мож

    PHP:
    1.  
    2. <?php
    3. print_r($_POST);
    4. ?>
    5.  
     
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда

    советую для начла пользовать готовые либы. изучить их. что тм они делают и гоняют туда-сюда, а потом свое писать.