В форме 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());
}
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()?
Что отправляется.
Вообще не отправляется или не приходит ответ?
Или приходит, но ошибочный?
Не вижу, что такое 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>
<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);
}
}
}
}
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.
Я не уверен что строчка var otvet = document.f.text.radiobutton;
работает правильно, но я не знаю как это проверить. Это мой первый код на Ajax.
Цитата(vasa_c @ 4.11.2007, 9:28) [snapback]28928[/snapback]
Я не вижу, где она вызывается.
Не вижу, что такое request
Не вижу формы.
Не вижу showConfirmation
Не вижу, что такое 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.
Я не уверен что строчка var otvet = document.f.text.radiobutton;
работает правильно, но я не знаю как это проверить. Это мой первый код на Ajax.
Цитата(vasa_c @ 4.11.2007, 9:28) [snapback]28928[/snapback]
Я не вижу, где она вызывается.
Не вижу, что такое request
Не вижу формы.
Не вижу showConfirmation
Не вижу, что такое request
Не вижу формы.
Не вижу showConfirmation
Спустя 36 минут, 2 секунды (4.11.2007 - 17:17) vasa_c написал(а):
Поставьте себе FireFox + FireBug для отладки.
Мне он выдает: document.f.text has no properties
Мне он выдает: 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>";
}
?>
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 написал(а):
Кстати если прописать
Это не понял почему но не работет 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);
// продолжаем работать в данной функции
if (request.readyState == 4) {
if (request.status == 200) {
response = request.responseText;
document.all.TS.innerHTML = response;
} else
alert("status is " + request.status);
}
}
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);
}
}
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() посылает запрос на сервер. Когда придет ответ и придет ли вообще, не знает никто.
send() посылает запрос на сервер. Когда придет ответ и придет ли вообще, не знает никто.
Спустя 22 часа, 20 минут, 44 секунды (11.11.2007 - 11:06) mazahaka написал(а):
Цитата(vasa_c @ 10.11.2007, 9:45) [snapback]29144[/snapback]
Потому что центральное слово в аббревиатуре AJAX — "асинхронный".
send() посылает запрос на сервер. Когда придет ответ и придет ли вообще, не знает никто.
send() посылает запрос на сервер. Когда придет ответ и придет ли вообще, не знает никто.
Понятно! спасибо
_____________