Проблема XMLHttpRequest - PullRequest
1 голос
/ 25 июля 2011

У меня есть JavaScript, который получает содержимое другой веб-страницы, которая находится на моем сервере. но он работает только с функцией onchange, поэтому только когда я выбираю опцию int, он работает с моим javascript.

Но я хочу, чтобы она работала с кнопкой отправки.

Чтобы при нажатии кнопки «Отправить» выполнялось то же действие, что и в раскрывающемся меню. и я не могу это сделать.

Какой совет?

    <html>
<head>
<script type="text/javascript">
function showUser(str)
{
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    //document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    alert("testing");
    }
  }
xmlhttp.open("GET","querie.php");
xmlhttp.send();
}
</script>
</head>
<body>

<form>
<select name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
</form>
<form id="game" action="" onsubmit="return showUser(this.value)" method="post">
<input type=submit value=Send />

</form>
<br />
<div id="txtHint"><b>Person info will be listed here.</b></div>
</body>
</html>

Ответы [ 3 ]

0 голосов
/ 25 июля 2011

this.value зависит от контекста.Он работает в атрибуте элемента <select>, но имеет другое значение в элементе <form> совершенно другой формы.Как насчет того, чтобы вместо 2 форм было просто 1. Что-то вроде этого должно работать.Кроме того,

<form method="post"
    onsubmit="var users=document.getElementById('users'); showUser(users[users.selectedIndex].value); return true;">
    <select id="users" name="users" onchange="showUser(this.value);">
        <option value="">Select a person:</option>
        <option value="1">Peter Griffin</option>
        <option value="2">Lois Griffin</option>
        <option value="3">Glenn Quagmire</option>
        <option value="4">Joseph Swanson</option>
    </select>
    <input type="submit" value="Send" />
</form>

Обновление:

Ваш комментарий предполагает, что вам вообще не нужен выпадающий список.Это было не ясно из вопроса.В любом случае это значительно упрощает как HTML, так и JavaScript.Попробуйте что-то вроде кода ниже.Примечание: обработчик onsubmit возвращает false, чтобы при отправке формы фактически не загружалась новая страница.

<html>
<head>
<script type="text/javascript">
function showUser() {
    var xmlhttp = null;
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById('txtHint').innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open('GET', 'querie.php');
    xmlhttp.send();
}
</script>
</head>
<body>

    <form onsubmit="showUser(); return false;" method="post">
        <input type="submit" value="Send" />
    </form>

    <br />
    <div id="txtHint"><b>Person info will be listed here.</b></div>
</body>
</html>
0 голосов
/ 25 июля 2011

Удалите тег form, обернутый вокруг кнопки отправки. В первый / оригинальный тег формы добавьте `onsubmit =" showUser (names.value) "

0 голосов
/ 25 июля 2011
<form id="game" action="" onsubmit="return showUser(**this.value**)" method="post">

У вас есть две отдельные формы.Список находится в первой форме, а ваша кнопка - во второй.Во второй форме this.value не имеет значения в открывающем теге FORM, поскольку тег FORM не является вводом.

Попробуйте это:

<form id="game" action="" onsubmit="return showUser(document.name_of_form1.users.options[document.name_of_form1.users.selectedIndex].value)" method="post">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...