Криво работает 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, время: 01:09. |