Возникла проблема
Здравствуйте!
Проблема заключается в моем незнании! На одном сайте нашел такой скрипт: var default_content=""; $(document).ready(function(){ checkURL(); $('ul li a').click(function (e){ checkURL(this.hash); }); default_content = $('#pageContent').html(); setInterval("checkURL()",250); }); var lasturl=""; function checkURL(hash) { if(!hash) hash=window.location.hash; if(hash != lasturl) { lasturl=hash; if(hash=="") $('#pageContent').html(default_content); else loadPage(hash); } } function loadPage(url) { url=url.replace('#',''); $.ajax({ type: "POST", url: "load_module.php", data: 'mod='+url, dataType: "html", success: function(msg){ if(parseInt(msg)!=0) { $('#pageContent').html(msg); } } }); } Это простенькая загрузка страницы на AJAX. Обрабатывает ссылки типа: site.ru/#load Тут оно заменяет только символ # и загружает у меня php скрипт load НО мне допустим надо скрипт загружать с параметром Например ссылка типа такого: site.ru/#load?name=Lager Как можно сделать так, что бы проверило наличие "?name=" и записало в другую переменную (url2 например) |
SkyLaGer,
:-? <script> function loadPage(url) {var url2 = ''; url = url.split(/#|\?name=/); if(url[2]) url2 = url[2]; url = url[1]; alert([url,url2]) } loadPage("#load?name=Lager"); loadPage("#load"); </script> |
рони, спасибо!
|
Все же проблемка есть.
Если без параметра грузить скрипт, то работает. Когда с параметром - не работает. С чем может быть связано такое? |
SkyLaGer,
как выглядит код далее? с дополнением |
рони,
Вот обработчик ссылок сейчас: function loadPage(url) { var url2 = ''; url = url.split(/#|\?name=/); if(url[2]) url2 = url[2]; url = url[1]; ShowLoading(); $('#progress').css('none','inline'); $("html, body").animate({ scrollTop: 0 }, "slow"); $.ajax({ type: "POST", url: "load_module.php", data: 'mod='+url+'&name='+url2, dataType: "html", success: function(msg){ if(parseInt(msg)!=0) { $('#pageContent').html(msg); HideLoading(); } } }); } Вот скрпт load_module.php <?php if(!$_POST['mod']) die("<ul class=breadcrumb><h2>#404</h2><br><li>Page is not found</li></ul>"); $mod = (string)$_POST['mod']; if(!$_POST['name']) { if(file_exists('modules/'.$mod.'.php')) echo include ('modules/'.$mod.'.php'); else echo '<ul class="breadcrumb"> <h2>#404</h2><br><li>Данная страница отсутсвует. Уж простите ;) </li></ul>'; } else { $user = (string)$_POST['name']; if($user) echo include ('modules/'.$mod.'.php?name='.$name.''); else echo '<ul class="breadcrumb"> <h2>#404</h2><br><li>Данная страница отсутсвует. Уж простите ;) </li></ul>'; } ?> А это players.php (ссылка типа site.ru/#players?name=Lager) <?php include ('config.php'); include_once ('mysql.php'); $PLName = $_POST['name']; if(!preg_match("^[a-zA-Z0-9_]^",$PLName)) die("<ul class=breadcrumb><li>Вы неверно задали запрос!</li></ul>"); $query = "SELECT * FROM `Accounts` WHERE `Nickname` = '$PLName'"; $result = mysql_query($query); if (mysql_num_rows($result) == 0) echo "<ul class=breadcrumb><li>Такого игрока не существует в базе данных!</li></ul>"; else echo "<ul class=breadcrumb><li>Такой игрок есть!</li></ul>"; @mysql_close(); ?> |
SkyLaGer,
менять надо checkURL Возможный вариант function checkURL(hash, search) { if(!hash) hash=window.location.hash; if(!search) search=window.location.search; if(hash != lasturl) { lasturl=hash; if(hash=="") $('#pageContent').html(default_content); else { hash = hash.replace('#',''); search = hash.replace('?name=',''); loadPage(hash,search); } } } function loadPage(url,url2) { ShowLoading(); $('#progress').css('none','inline'); $("html, body").animate({ scrollTop: 0 }, "slow"); $.ajax({ type: "POST", url: "load_module.php", data: 'mod='+url+'&name='+url2, dataType: "html", success: function(msg){ if(parseInt(msg)!=0) { $('#pageContent').html(msg); HideLoading(); } } }); } |
hash = hash.replace('#',''); search = hash.replace('?name=',''); Вот тут что то не так Добавил alert([hash,search]) и выяснилось что hash = players?name=LaGer search = playersLaGer т.е. оно заменяет нужные фрагменты, но тем не менее оставляет не нужные символы, в первом случае оставляет ?name=LaGer Во втором: players |
CLOSED!
Разобрался ) Я обращался к скрипту с параметром неправильно. |
Часовой пояс GMT +3, время: 02:10. |