ajax и php

LiFe

Новичок
ajax и php

День добрый всем!

есть такой файл js
/********
function createRequestObject(){
var request_;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
request_ = new ActiveXObject("Microsoft.XMLHTTP");
}else{
request_ = new XMLHttpRequest();
}
return request_;
}


function getnas_punkt() {
var http = createRequestObject();
var url = "reload_nas_punkt.php";
var params = "&rajon=" + document.getElementById("rajon").value;
http.open("POST", url, true);

http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");

http.onreadystatechange = function() {
if(http.readyState == 3){
document.getElementById('nas_punkt').innerHTML = '<img src=\"loader.gif\">';
}
if(http.readyState == 4 && http.status == 200) {
var response = http.responseText;
document.getElementById('nas_punkt').innerHTML = response;
}
}
http.send(params);
}
/**********

Дальше есть select при смене которого вызывается эта функция. в свою очередь она обновляет другой selsct который генерируется из базы выглядит так
/*********

echo '<div id="nas_punkt">';
if ($rajon>0) {
$region = '<select name="nas_punkt_select" id="nas_punkt_select" class="formstyle1" size="1" style="width:120">';
$region .= "<option value='-1'>Выбрать</option>";
$result = query_db('SELECT * FROM nas_punkt WHERE rajon_id="'.$rajon.'" ORDER BY nas_punkt_name');

while($str = mysql_fetch_array($result)) {
if ($nas_punkt_select==$str['id']) { $sel='selected'; } else { $sel=''; }

$region .= "<option value=".$str['id']." ".$sel.">".$str[1]."</option>";


}
$region .= "</select>";

} else {
echo 'Сначала выбрать район';
}
echo $region;
echo '</div>';

Все прекрасно обновляется работает при нажатии submit переменная nas_punkt_select не передается ...

Подскажите где я не прав, заранее благодарен ...
 

LiFe

Новичок
var_dump ($_post);
Остальные переменные передает эту нет ...

Все обновляется все работает в этом и проблема! На других моих проектах работает ..
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
LiFe
нет такого массива, есть $_POST. Твой код не валиден, у Value нет кавычек. И писать так не хорошо.
 

LiFe

Новичок
по поводу масива знаю ... написал как быстрее ..

у Value убрал ковычки спасибо за комментарий

Как проверить код на валидность или чем ?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
LiFe
Надо было не убирать кавычки, а добавлять.
Найди 2 отличия:
Код:
$region .= "<option value=".$str['id']." ".$sel.">".$str[1]."</option>";
Код:
$region .= "<option value='".$str['id']."' ".$sel.">".$str[1]."</option>";
Валидность можно проверить установив в firefox плагин web developer и нажав на проверяемой странице Ctrl+Shift+A
 

LiFe

Новичок
Ну все здорово ... но мне ошибки html не надо проверять ...
у меня проблема в js
 

dimagolov

Новичок
у меня проблема в js
тебе рассказать как отлаживать JS?
берешь и вставляешь alert и проверяешь соответсвуют в определенных точках значения переменных ожидаемым (и вообще, выполняется ли код или он загнулся от кривого синтаксиса или фаталов)
 

LiFe

Новичок
код работает все отрабатывает все меняется как надо ...
он находится с форме которая передает много переменных постом но переменную которая генерируется в диве не передается ...
в коде проблемы нету !!!
 

С.

Продвинутый новичок
Ну раз в коде проблем нет, то все должно работать как надо. Вопрос решен.
 

LiFe

Новичок
угу вопрос был в том что <form> было ниже таблицы в которой все селекты были ... перенес строчку выше перед <table> и все заработало ...
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
LiFe
Валидность кода напрямую связана с тем будет он работать или нет. Потому как HTML неразрывно связан с JS и если ты криво напишешь select/form то не факт что во всех браузерах оно будет работать как ты ожидал. Лично я в этом убедился на своем горьком опыте.

Возможно под валидностью я имел в виду не совсем то, что понял ты(
 
Сверху