За последние 24 часа нас посетил 36891 программист и 1670 роботов. Сейчас ищут 1053 программиста ...

ajax передать через POST в PHP

Тема в разделе "JavaScript и AJAX", создана пользователем Perez, 24 июл 2012.

  1. Perez

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

    С нами с:
    24 апр 2012
    Сообщения:
    22
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Весь день сегодня убил и пол гугла просмотрел, не могу понять почему не передаётся в PHP значение поля 'txt'?
    Уже из разных сайтов кусками накидывал код... фиг!
    Помогите!!!


    <script>

    var req;
    function createRequestObject() {
    if (typeof XMLHttpRequest === 'undefined') {
    XMLHttpRequest = function() {
    try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
    catch(e) {}
    try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
    catch(e) {}
    try { return new ActiveXObject("Msxml2.XMLHTTP"); }
    catch(e) {}
    try { return new ActiveXObject("Microsoft.XMLHTTP"); }
    catch(e) {}
    throw new Error("This browser does not support XMLHttpRequest.");
    };
    }
    return new XMLHttpRequest();
    }
    function loadXMLDoc(url,send)
    {
    req=createRequestObject()

    if (req) {
    req.open("POST", url, true);
    req.onreadystatechange = processReqChange;
    req.send(send);
    }
    return false;
    }

    function processReqChange()
    {
    try { // Важно!
    // только при состоянии "complete"
    if (req.readyState == 4) {
    // для статуса "OK"
    if (req.status == 200) {
    // обработка ответа
    document.getElementById('txt').value=req.responseText;
    } else {
    alert("Не удалось получить данные:\n" +
    req.statusText);
    }
    }
    }
    catch( e ) {
    // alert('Ошибка: ' + e.description);
    // В связи с багом XMLHttpRequest в Firefox приходится отлавливать ошибку
    // Bugzilla Bug 238559 XMLHttpRequest needs a way to report networking errors
    // https://bugzilla.mozilla.org/show_bug.cgi?id=238559
    }
    }

    </script>
    <meta charset="windows-1251">
    <title></title>
    </head>

    <body>
    <form action="get_a.php" onSubmit="return loadXMLDoc('get_a.php','txt='+document.getElementById('txt').value);">
    <input name="txt" id="txt" type="text" value="0" size="10" maxlength="10">
    <input name="btn" type="button" value="ОК!">
    </form>


    в php (уже всяко извращался..):

    <?php
    header("Content-type: text/plain; charset=windows-1251");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    //sleep(2);
    $val = iconv("UTF-8","CP1251", $_POST["txt"]);
    $q=''.$val;
    echo '1='.$q.$_POST["txt"];
    ?>

    в итоге выводится: 1=
    и всё тут...
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    jQuery рулит
     
  3. Perez

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

    С нами с:
    24 апр 2012
    Сообщения:
    22
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Нашёл! Забыл перед req.send( строку:
    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7