Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.05.2014, 18:27
Интересующийся
Отправить личное сообщение для SkyLaGer Посмотреть профиль Найти все сообщения от SkyLaGer
 
Регистрация: 17.05.2014
Сообщений: 10

Возникла проблема
Здравствуйте!

Проблема заключается в моем незнании!

На одном сайте нашел такой скрипт:

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 например)
Ответить с цитированием
  #2 (permalink)  
Старый 17.05.2014, 18:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

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>
Ответить с цитированием
  #3 (permalink)  
Старый 17.05.2014, 19:15
Интересующийся
Отправить личное сообщение для SkyLaGer Посмотреть профиль Найти все сообщения от SkyLaGer
 
Регистрация: 17.05.2014
Сообщений: 10

рони, спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 17.05.2014, 20:56
Интересующийся
Отправить личное сообщение для SkyLaGer Посмотреть профиль Найти все сообщения от SkyLaGer
 
Регистрация: 17.05.2014
Сообщений: 10

Все же проблемка есть.
Если без параметра грузить скрипт, то работает.
Когда с параметром - не работает.

С чем может быть связано такое?
Ответить с цитированием
  #5 (permalink)  
Старый 17.05.2014, 21:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

SkyLaGer,
как выглядит код далее? с дополнением
Ответить с цитированием
  #6 (permalink)  
Старый 18.05.2014, 11:08
Интересующийся
Отправить личное сообщение для SkyLaGer Посмотреть профиль Найти все сообщения от SkyLaGer
 
Регистрация: 17.05.2014
Сообщений: 10

рони,

Вот обработчик ссылок сейчас:
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, 18.05.2014 в 11:10.
Ответить с цитированием
  #7 (permalink)  
Старый 18.05.2014, 12:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

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();
				}
			}
		});
}
Ответить с цитированием
  #8 (permalink)  
Старый 18.05.2014, 13:19
Интересующийся
Отправить личное сообщение для SkyLaGer Посмотреть профиль Найти все сообщения от SkyLaGer
 
Регистрация: 17.05.2014
Сообщений: 10

hash = hash.replace('#','');
              search = hash.replace('?name=','');


Вот тут что то не так

Добавил
alert([hash,search])

и выяснилось что

hash = players?name=LaGer
search = playersLaGer


т.е. оно заменяет нужные фрагменты, но тем не менее оставляет не нужные символы, в первом случае оставляет ?name=LaGer
Во втором: players
Ответить с цитированием
  #9 (permalink)  
Старый 19.05.2014, 18:23
Интересующийся
Отправить личное сообщение для SkyLaGer Посмотреть профиль Найти все сообщения от SkyLaGer
 
Регистрация: 17.05.2014
Сообщений: 10

CLOSED!

Разобрался )

Я обращался к скрипту с параметром неправильно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с радио кнопками px379 Общие вопросы Javascript 8 29.07.2013 09:30
Анимация. Возникла проблема с Анимацией в JS( stanislav96 Элементы интерфейса 5 30.03.2013 09:39
проблема с setInterval / clearInterval max0n Общие вопросы Javascript 4 11.09.2012 12:12
Проблема с обработкой ескольких .hover() anocean jQuery 3 15.06.2012 22:43
проблема с сабмит mapt Events/DOM/Window 1 15.06.2009 13:45