Не удалось отправить данные из JS на php - PullRequest
0 голосов
/ 25 марта 2011

привет друг У меня есть HTML-страница, с которой я хочу отправить информацию в PHP-скрипт. посмотрите html-страницу здесь .....

<html>
<head>

<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
//frm.submit();
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","infor.php",true);
xmlhttp.send();
}
</script>

<body bgcolor="white">
<table style="position: absolute; left: 00px; top: 00px;">
<tr><td width="1000" height="400" style="background:#666666">
<table style="position: absolute; left: 40px; top: 40px;">
<tr><td width="900" height="300" style="background:#C8C8C8">
<form name="frm" action="info.php" method="post">




State Name<select name="t1" id="list1" size="1" single onchange="loadXMLDoc();">
<option value="ANDHRA PRADESH">ANDHRA PRADESH</option>
<option value="ASSAM">ASSAM</option>
<option value="BIHAR">BIHAR</option>
<option value="CHATTISGARH">CHATTISGARH</option>
<option value="DELHI">DELHI</option>
<option value="GOA">GOA</option>
<option value="GUJRAT">GUJRAT</option>
<option value="HARYANA">HARYANA</option>
<option value="KERLA">KERLA</option>
<option value="MANIPUR">MANIPUR</option>
<option value="ORISSA">ORISSA</option>
<option value="PANJAB">PANJAB</option>
<option value="TAMILNADU">TAMILNADU</option>
<option value="WEST BANGAL">WEST BANGAL</option>
</select>
<div id="myDiv">
</div>
</form>
<input type="button" value="Close this window" onclick="self.close()">
</td></tr>
</table>
</body>
</head>
</html>

а вот мой скрипт php ....

<?php
print $_GET["t1"];
?>

Но не знаю, почему это не работает .... Я не могу получить данные из БД. Похоже, что $ _GET ["t1"] у меня не работает, может кто-нибудь помочь мне исправить эту ошибку.

Ответы [ 2 ]

1 голос
/ 25 марта 2011

Проблема кажется довольно простой; Вы ничего не отправляете в форму.

Кажется, вы предполагаете, что код AJAX отправляет форму, но это не так. Вам придется вручную добавить переменные в URL.

Я никогда не делал AJAX так, как вы это делаете (подробнее об этом ниже), но вместо ...

xmlhttp.open("GET", "infor.php", true);

... вам нужно будет передать переменные в infor.php. Смотрите это для демонстрации того, как должна выглядеть строка URL:

xmlhttp.open("GET", "infor.php?var1=value1&var2=value2", true);

... хотя в вашем конкретном случае, поскольку ваши переменные не жестко запрограммированы, а из формы, вы можете ссылаться на переменную формы следующим образом:

xmlhttp.open("GET", "infor.php?t1=" + document.getElementById("list1").value, true);

... и, наконец, вы должны URL-кодировать данные следующим образом:

xmlhttp.open("GET", "infor.php?t1=" + encodeURIComponent(document.getElementById("list1").value), true);

Это должно сработать, но это не красиво и не удобно. Вы действительно должны использовать какую-то библиотеку для выполнения AJAX вместо того, чтобы выполнять всю мелкую работу самостоятельно. jQuery и Prototype предлагают отличную реализацию функциональности AJAX.

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

Вы можете найти jQuery здесь: http://jquery.com/

И вы можете найти прототип здесь: http://www.prototypejs.org/

Не имеет значения, какой из них вы используете для AJAX, в этом отношении они работают очень похоже.

0 голосов
/ 25 марта 2011

Вы должны создать параметры Нравится

var parms = "t1 =" + document.getElementById ('list1'). Value;

и на xmlhttp.open ("GET", "infor.php?" + Parms, true);

это отправит ваш блок выбора t1 на эту страницу php.

на странице php вы можете получить параметр, напечатав $ _GET ['t1']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...