ajax и php

  • Автор темы Автор темы LiFe
  • Дата начала Дата начала

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 не передается ...

Подскажите где я не прав, заранее благодарен ...
 
var_dump ($_post);
Остальные переменные передает эту нет ...

Все обновляется все работает в этом и проблема! На других моих проектах работает ..
 
LiFe
нет такого массива, есть $_POST. Твой код не валиден, у Value нет кавычек. И писать так не хорошо.
 
по поводу масива знаю ... написал как быстрее ..

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

Как проверить код на валидность или чем ?
 
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
 
Ну все здорово ... но мне ошибки html не надо проверять ...
у меня проблема в js
 
у меня проблема в js
тебе рассказать как отлаживать JS?
берешь и вставляешь alert и проверяешь соответсвуют в определенных точках значения переменных ожидаемым (и вообще, выполняется ли код или он загнулся от кривого синтаксиса или фаталов)
 
код работает все отрабатывает все меняется как надо ...
он находится с форме которая передает много переменных постом но переменную которая генерируется в диве не передается ...
в коде проблемы нету !!!
 
Ну раз в коде проблем нет, то все должно работать как надо. Вопрос решен.
 
угу вопрос был в том что <form> было ниже таблицы в которой все селекты были ... перенес строчку выше перед <table> и все заработало ...
 
LiFe
Валидность кода напрямую связана с тем будет он работать или нет. Потому как HTML неразрывно связан с JS и если ты криво напишешь select/form то не факт что во всех браузерах оно будет работать как ты ожидал. Лично я в этом убедился на своем горьком опыте.

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