Криво работает XMLHttpRequest
Всем доброго времени суток.
В общем есть у меня две странички, одна идет как шапка и подтягивает другую, которая в свою очередь таблица генерирующаяся из БД. index.php:
...
function getXmlHttp(){...}
function search() {
var param = 'fraction=' + document.getElementById('fraction').value + '&category=' + document.getElementById('category').value;
var xmlhttp = getXmlHttp()
xmlhttp.open('GET', 'http://..../index2.php?' +param, true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
document.getElementById('load').innerHTML=xmlhttp.responseText;
}
$(document).ready(function() {
$("#example").tablesorter( {
widgets: ["zebra"],
sortList:[[1,0]]
});
});
}
};
xmlhttp.send(null);
}
...
<body>
<table cellpadding='0' cellspacing='0' width=100%>
<tr>
<td align='center' >
<select id='fraction'>
<option value='1'>1</option>
<option value='2'>2</option>
</select>
<select id='category'>
<option value='1'>1</option>
<option value='2'>2</option>
</select>
<input type='button' value='Найти' onClick='search();'>
</td>
</tr>
</table>
</body>
и index2.php:
<?php
...
if(isset($_GET['fraction'], $_GET['category'])) { $fr=$_GET['fraction']; $ct=$_GET['category']; } else { $fr="1"; $ct="1";};
$tb=query("SELECT * FROM $table1 INNER JOIN $table2 using(id) WHERE fraction='$fr' AND category='$ct' ORDER BY lvl");
if (mysql_num_rows($tb)>0)
{
//генерируется таблица
}
?>
//и вывожу
...
<table id='example' width='100%' border='1' >
<tbody>
<?= ... ?>
</tbody>
</table>
Суть в том, что когда я запускаю скрипт отдельно - он работает нормально, но стоит его подключить в один из разделов на сайте и запустить там, начинаются проблемы: select id='category' игнорируется, ну и естественно выставляется по умолчанию "1", какую бы я категорию не выбирал.. может кто помочь выяснить в чем проблема? |
с виду вроде все в норме, может кто другой более зоркий и увидит ошибку
но попробуйте изменить search на вот такой, раз уж вы используете jQuery, меньше кода меньше шансов сделать ошибку =-)
function search() {
$.ajax({
url: 'http://..../index2.php',
type: 'GET',
data: {
category: $('#category').val(),
fraction: $('#fraction').val()
},
success: function(data) {
$('#load').html(data);
$("#example").tablesorter({
widgets: ["zebra"],
sortList:[[1,0]]
});
} // success
}) // ajax
} //search
|
Причина оказалась в том, что какая то пакость на сайте преобразует
&categoryна &categoryесли не получится выяснить что, последую Вашему совету. Спасибо. Никто случайно не знает, из-за чего это может быть ? |
htmlspecialchars или его соплеменники.
|
Да =-), помнится тоже что-то такое было где-то, у меня это было, когда ответ приходил с сервера и содержал в себе url, решение было костылем, replace (/&/, &)
В какой момент у вас это происходит, когда создаете param? |
Цитата:
|
В данном случает конечно странно, проверьте исходный код страницы, посмотрите что вам отдает сервер, действительно ли там '&category',
Ибо если вы используете какой либо шаблонизатор или еще чего, возможно он меняет & на & |
да, сайт по шаблону, скорее всего в нем и дело... вне сайта код успешно работает, а по httpfox смотрел что сервер выдает, как раз там и увидел подмену
|
решил я проблему, не меняя кода) придумал свой "костыль" :) когда создается param - там убрал &, а при генерации базы в колонку fraction добавил в конце :D
|
| Часовой пояс GMT +3, время: 18:23. |