[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Нужна помощь с Java Script (Ajax)
flash_guy
submitOrder() начинает работать принажатии на кнопку, она должна отправить запрос к пхп файлу, а она не отправляет, не могу понять почему.
В форме 5 элементов radiobutton. getOtvet() должна определять какой из них выбран, отправить должно 2 парамента, ид и radiobutton. В чем у меня ошибка? Пожалуйста, помогите!



Код
function getOtvet() {
  var otvet = document.f.text.radiobutton;
for (i=0; i<otvet.length; i++) {
if (otvet[i].checked == true){
return otvet[i].value;
}
}
}
function submitOrder() {

var id = document.getElementById("id222").value;

var url = "gol.php";
request.open("POST", url, true);
request.onreadystatechange = showConfirmation;
request.setRequestHeader("Content-Type",
                          "application/x-www-form-urlencoded");
request.send("id=" + escape(id) +
              "&radiobutton=" + getOtvet());
}




Спустя 33 минуты, 55 секунд (4.11.2007 - 10:28) vasa_c написал(а):
Я не вижу, где она вызывается.
Не вижу, что такое request
Не вижу формы.
Не вижу showConfirmation

Что будет, если ни один не выбран, что вернет getOtvet()
url-кодирование производится encodeURIComponent(), а не escape()
Попробуйте убрать установку content-type, она по-моему не везде срабатывает

Займитесь вообще отладкой и локализацией проблемы.
Вызывается ли вообще submitOrder()?
Что приходит в getOtvet()?
Что отправляется.
Вообще не отправляется или не приходит ответ?
Или приходит, но ошибочный?

Спустя 4 часа, 26 минут, 22 секунды (4.11.2007 - 14:54) flash_guy написал(а):
Форма:

Код
<FORM name="f" id="order-form">
                    <p>
                      <strong>Опрос</strong>
                      <?
$mysql_link = mysql_connect("***");
                  mysql_select_db(***);


        $sql = ***';
        
$result = mysql_query($sql);
$op=mysql_fetch_array($result);


?>
                      <? echo $op[vopros]; ?> </p>
                    <p align="left">
                   <div id="main-page2" >   <input name="radiobutton" id="radiobutton" type="radio" value="1">
                      <? echo $op[otvet1]; ?><br>
                      <input name="radiobutton" id="radiobutton" type="radio" value="2">
                      <? echo $op[otvet2]; ?><br>
                      <input name="radiobutton" id="radiobutton" type="radio" value="3">
                      <? echo $op[otvet3]; ?><br>
                      <input name="radiobutton" id="radiobutton" type="radio" value="4">
                      <? echo $op[otvet4]; ?>
                      <input name="id222" type="hidden" id="id222" value="1">
                      <br>
                      <input name="radiobutton" id="radiobutton" type="radio" value="5">
                      <? echo $op[otvet5]; ?> <br>
                      <INPUT  type="button" value="Голосовать"  onClick="submitOrder();" >
                    </div>

                                          </p>
                 </FORM>

Спустя 53 секунды (4.11.2007 - 14:55) flash_guy написал(а):
Код
function showConfirmation() {
  if (request.readyState == 4) {
    if (request.status == 200) {
      var response = request.responseText;
      // Locate form on page
      var mainDiv = document.getElementById("main-page2");
      var orderForm = document.getElementById("order-form");

      // Create some confirmation text
      pElement = document.createElement("p");
      textNode = document.createTextNode(response);
      pElement.appendChild(textNode);

      // Replace the form with the confirmation
      mainDiv.replaceChild(pElement, orderForm);
    } else {
      var message = request.getResponseHeader("Status");
      if ((message == null) || (message.length <= 0)) {
        alert("Error! Request status is " + request.status);
      } else {
        alert(message);
      }
    }
  }
}

Спустя 3 минуты, 26 секунд (4.11.2007 - 14:58) flash_guy написал(а):
Я думаю, что ошибка до отправки запроса в пхп файл, я не знаю как ее найти. Она или в getOtvet() или submitOrder().

Я не уверен что строчка var otvet = document.f.text.radiobutton;
работает правильно, но я не знаю как это проверить. Это мой первый код на Ajax.


Цитата(vasa_c @ 4.11.2007, 9:28) [snapback]28928[/snapback]
Я не вижу, где она вызывается.
Не вижу, что такое request
Не вижу формы.
Не вижу showConfirmation


Спустя 1 час, 36 минут, 59 секунд (4.11.2007 - 16:35) vasa_c написал(а):
Цитата
Я не уверен что строчка var otvet = document.f.text.radiobutton;
работает правильно, но я не знаю как это проверить.

Сделайте alert(otvet) после нее.

Спустя 5 минут, 16 секунд (4.11.2007 - 16:41) flash_guy написал(а):
не работает: http://www.zyll.net/kniga/forum.php (опрос)
ничего не выводит

Цитата(flash_guy @ 4.11.2007, 13:58) [snapback]28939[/snapback]
Я думаю, что ошибка до отправки запроса в пхп файл, я не знаю как ее найти. Она или в getOtvet() или submitOrder().

Я не уверен что строчка var otvet = document.f.text.radiobutton;
работает правильно, но я не знаю как это проверить. Это мой первый код на Ajax.


Цитата(vasa_c @ 4.11.2007, 9:28) [snapback]28928[/snapback]
Я не вижу, где она вызывается.
Не вижу, что такое request
Не вижу формы.
Не вижу showConfirmation



Спустя 36 минут, 2 секунды (4.11.2007 - 17:17) vasa_c написал(а):
Поставьте себе FireFox + FireBug для отладки.
Мне он выдает: document.f.text has no properties

Спустя 5 дней, 3 часа, 41 минута, 17 секунд (9.11.2007 - 20:58) mazahaka написал(а):
заюзай
Код
<?
if (ini_get('register_globals') != 1) {
       $supers = array("_REQUEST","_ENV","_SERVER","_POST","_GET",
"_COOKIE","_SESSION","_GLOBALS");
       foreach ($supers as $__s) {
           if ((isset($$__s) == true) && (is_array($$__s) == true))
extract($$__s, EXTR_OVERWRITE);
       }
       unset($supers);
}
global $mode;
if (!$mode){
?>
<script language="">
<!-- Script Begin
var request;
function createRequest(){
try {
  request = new XMLHttpRequest();
} catch (trymicrosoft) {
  try {
    request = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (othermicrosoft) {
    try {
      request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {
      request = false;
    }
  }
}
if (!request)
  alert("Error initializing XMLHttpRequest!");
}

function selec(){
createRequest();
     var r = document.form.t.value;
     var url = "?mode=sel&tx="+r;
     request.open("GET", url, true);
     request.send(null);
    request.onreadystatechange = updatePage1;
}

function updatePage1() {
     if (request.readyState == 4) {
       if (request.status == 200) {
          response = request.responseText;
          document.all.TS.innerHTML =  response;
       } else
         alert("status is " + request.status);
     }
   }


function ajax(){
createRequest();
    document.form.txt.value="";
    document.form.txt.style.background="#A6A6A6";

     var r = document.form.t.value;
     var url = "?mode=as&tx="+r;
     request.open("GET", url, true);
     request.send(null);
    request.onreadystatechange = updatePage;
}
function updatePage() {
     if (request.readyState == 4) {
       if (request.status == 200) {
    document.form.txt.style.background="#FFFFFF";
          response = request.responseText;
          document.all.clock.innerHTML =  response;
          document.form.txt.value = response;
       } else
         alert("status is " + request.status);
     }
   }
function select(){
document.form.txt.value = document.form.test.value;
}
//  Script End -->
</script>
<body onload="">
<form name="form">

<input type="text" name="t" size="40" maxlength="256"><br>
<div id="TS"></div>
<textarea name="txt" cols="42" rows="9" style="border: solid 1px #000000;" language="HTML"></textarea>

<input type="button" value="test" onclick="ajax();">
<input type="button" value="test_sel" onclick="selec();">
</form>
<DIV ID="clock">
</DIV>                      
</body>
<?
}
if ($mode=="as"){
    for ($i=0;$i<500;$i++){
        echo "\r\n $tx - $i <br>";
    }
}

if ($mode=="sel"){
echo "<select name=\"test\" onchange=\"select()\">";
    for ($i=0;$i<500;$i++){
        echo "<option value=\"$i\">$i -> $tx</option>";
    }
echo "</select>";
}

?>

Спустя 15 часов, 39 минут, 1 секунда (10.11.2007 - 12:37) mazahaka написал(а):
Кстати если прописать
Код
function selec(){
createRequest();
     var r = document.form.t.value;
     var url = "?mode=sel&tx="+r;
     request.open("GET", url, true);
     request.send(null);
       // продолжаем работать в данной функции

if (request.readyState == 4) {
       if (request.status == 200) {
          response = request.responseText;
          document.all.TS.innerHTML =  response;
       } else
         alert("status is " + request.status);
     }
}

Это не понял почему но не работет request.readyState возвращает 1
а вот если использовать
Код
function selec(){
createRequest();
     var r = document.form.t.value;
     var url = "?mode=sel&tx="+r;
     request.open("GET", url, true);
     request.send(null);
    request.onreadystatechange = updatePage1; //вызываем вункцию
}

function updatePage1() {
     if (request.readyState == 4) {
       if (request.status == 200) {
          response = request.responseText;
          document.all.TS.innerHTML =  response;
       } else
         alert("status is " + request.status);
     }
   }

Так все работает.

Спустя 8 минут, 3 секунды (10.11.2007 - 12:45) vasa_c написал(а):
Потому что центральное слово в аббревиатуре AJAX — "асинхронный".
send() посылает запрос на сервер. Когда придет ответ и придет ли вообще, не знает никто.

Спустя 22 часа, 20 минут, 44 секунды (11.11.2007 - 11:06) mazahaka написал(а):
Цитата(vasa_c @ 10.11.2007, 9:45) [snapback]29144[/snapback]
Потому что центральное слово в аббревиатуре AJAX — "асинхронный".
send() посылает запрос на сервер. Когда придет ответ и придет ли вообще, не знает никто.


Понятно! спасибо


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.