Возникла проблема
Здравствуйте!
Проблема заключается в моем незнании! На одном сайте нашел такой скрипт:
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, время: 21:01. |