SearchEngines.bg

Това е примерно съобщение за гост. Регистрирайте безплатен акаунт днес, за да станете потребител на SearchEngines.bg! След като влезете, ще можете да участвате в този сайт, като добавите свои собствени теми и публикации, както и да се свържете с други членове чрез вашата лична входяща кутия! Благодарим ви!

Въпрос за ajax xml заявка към сървър

wordi4

New member
Здравейте ! Имам следния код чрез който правя заявка към даден сървър и взимам информацията от xml файла
Код:
function showVicoveKategorii(){
    var xml = '';
    $.ajax({
      url: "http://smeshnoto.eu/rss/mobile_vicove_cats.php",
      dataType: 'xml',
     success: kategorii,
     error: function () {
         alert('Грешка в сървъра');
     }
    });
    
}
function kategorii(xml){
	 var obj = document.getElementById("vicove_kategorii_id");	
$(xml).find('category').each(function(){
  var catname = $(this).find('cat_name').text();
  var catid = $(this).find('cat_id').text();
  var titlevic = $(this).find('title_vic').text();
  var descvic = $(this).find('desc_vic').text();
  addContent(obj, '<a href="" onClick="alert(\''+descvic+'\');" data-role="button">'+catname+'</a>');

});  
}
В момента обаче при алерт , ми изписва всичките descvic от дадена <category> </category>
Замисъла ми беше да ги изкарва например с 1 ред разстояние , или по точно въпроса ми е как да взема по отделно елементите от <category> тоест да взема първия <title_vic> <desc_vic> , втория <title_vic> <desc_vic> и т.н.
П.С. говорим за андроид и по точно phonegap , ако това има значение.
 
За: Въпрос за ajax xml заявка към сървър

За: Въпрос за ajax xml заявка към сървър

XML - файла ти ли го генерираш или го вземаш на готово?
За да стане това, което искаш, трябва да направиш още един loop с each за да изкараш само вицовете от дадена категория.
Опитах се да ти направя примерен код, но фийда не се зарежда правилно - първо него трябва да поправиш.
Иначе бих ти препоръчал да ползваш JSON вместо XML.
Ако имаш нужда от помощ, пиши.
 
Re: За: Въпрос за ajax xml заявка към сървър

Re: За: Въпрос за ajax xml заявка към сървър

XML - файла ти ли го генерираш или го вземаш на готово?
За да стане това, което искаш, трябва да направиш още един loop с each за да изкараш само вицовете от дадена категория.
Опитах се да ти направя примерен код, но фийда не се зарежда правилно - първо него трябва да поправиш.
Иначе бих ти препоръчал да ползваш JSON вместо XML.
Ако имаш нужда от помощ, пиши.

Ами аз съм новак в тая област с json/xml заявките , та започнах от xml стъпка по стъпка ми се получиха нещата но това е едно от последните неща които трябва да врътна . Иначе какво имаш в предвид под "ти го генерираш или го вземаш на готово ?" ? Защото файла е пхп и имам достъп до него , мога да си правя каквото искам с него , проблема е че не знам как да изкарам всичките вицове от избрана категория (cat_id)
 
За: Въпрос за ajax xml заявка към сървър

За: Въпрос за ajax xml заявка към сървър

Щом ти генерираш xml-а би било хубаво да го коригираш -> Feed Validator Results: http://smeshnoto.eu/rss/mobile_vicove_cats.php
Пробвай да ги изкараш в JSON. Тука може да видиш нещо примерно: The Best Place to Run PHP Code Online - PhpFiddle Principal
Ето ти и пример защо ти предлагам да ползваш JSON: Loading external data into a PhoneGap app using the jQuery JSONP plugin for cross-domain access
 
Re: За: Въпрос за ajax xml заявка към сървър

Re: За: Въпрос за ajax xml заявка към сървър

Щом ти генерираш xml-а би било хубаво да го коригираш -> Feed Validator Results: http://smeshnoto.eu/rss/mobile_vicove_cats.php
Пробвай да ги изкараш в JSON. Тука може да видиш нещо примерно: The Best Place to Run PHP Code Online - PhpFiddle Principal
Ето ти и пример защо ти предлагам да ползваш JSON: Loading external data into a PhoneGap app using the jQuery JSONP plugin for cross-domain access
Пробвах json-a , но нещо не ми се получава ...в смисъл такъв не изкарва нито error нито success..
Кода който се опитвам да подкарам е :
Код:
	$.jsonp({
			url: 'http://smeshnoto.eu/rss/mobile_pics.php',
			callbackParameter: 'callback',
			success: function(data, status) {
				alert(data);
			},
			error: function(){
				alert('error');
			}
		});
 
За: Въпрос за ajax xml заявка към сървър

За: Въпрос за ajax xml заявка към сървър

Трябва да подаваш правилни json или xml хеадъри.

Освен това на посочения адрес връщаш XML, а не JSON. Съответно "data" ти е мноооого (прекалено) дълъг текст.
 
Re: За: Въпрос за ajax xml заявка към сървър

Re: За: Въпрос за ajax xml заявка към сървър

Трябва да подаваш правилни json или xml хеадъри.

Освен това на посочения адрес връщаш XML, а не JSON. Съответно "data" ти е мноооого (прекалено) дълъг текст.
Добре можете ли да ми помогнете например със посочения url , то другите ще станат аналогични :) Или поне да ми кажете къде точно са ми грешките , благодаря предварително !
 
За: Въпрос за ajax xml заявка към сървър

За: Въпрос за ajax xml заявка към сървър

Първия вариант, който си тръгнал да използваш е ок, но в него ти трябва още един вложен find за да ти извежда всички вицов в дадена категория.

Чисто практично си се насочил грешно към XML - по-удобно, бързо и ефективно е да използваш json, вместо xml.
 
Re: За: Въпрос за ajax xml заявка към сървър

Re: За: Въпрос за ajax xml заявка към сървър

Първия вариант, който си тръгнал да използваш е ок, но в него ти трябва още един вложен find за да ти извежда всички вицов в дадена категория.

Чисто практично си се насочил грешно към XML - по-удобно, бързо и ефективно е да използваш json, вместо xml.
Някакъв урок случайно да ти се намира за json php извеждане на данни , тоест вместо да извеждам xml темплейт от php данни да извеждам json
 
Re: За: Въпрос за ajax xml заявка към сървър

Re: За: Въпрос за ajax xml заявка към сървър

Някакъв урок случайно да ти се намира за json php извеждане на данни , тоест вместо да извеждам xml темплейт от php данни да извеждам json

Значи в момента имам следния url:
http://smeshnoto.eu/rss/json.php
и следния код в него :
PHP:
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

echo json_encode($arr);
?>
Кода чрез който взимам резултатите е
Код:
	$.ajax(
			{
			    type: "GET",
			    url: "http://smeshnoto.eu/rss/json.php",
			    dataType: "json",
			    data: {},
			    contentType: "application/json; charset=utf-8",
			    success: function(json)
			    {
			    	alert('asd');
			    }
			});
Но не се получава нищо , къде бъркам ?
 
За: Въпрос за ajax xml заявка към сървър

За: Въпрос за ajax xml заявка към сървър

В json.php добави:
header('Content-type: application/json; charset=utf-8');

т.е:
PHP:
<?php 
header('Content-type: application/json; charset=utf-8');
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); 

echo json_encode($arr); 
?>
 
За: Въпрос за ajax xml заявка към сървър

За: Въпрос за ajax xml заявка към сървър

Я виж с това може ли да започнеш нещо:

json.php

PHP:
<?php
header('Content-type: application/json; charset=utf-8');


$out2[]=array(
	'title_vic'=>'title21',
	'desc_vic'=> 'desc21',
	'link_vic'=>'link21'
);

$out2[]=array(
	'title_vic'=>'title22',
	'desc_vic'=> 'desc22',
	'link_vic'=>'link22'
);


$out1[]=array(
	'title_vic'=>'title11',
	'desc_vic'=> 'desc11',
	'link_vic'=>'link11'
);

$out1[]=array(
	'title_vic'=>'title12',
	'desc_vic'=> 'desc12',
	'link_vic'=>'link12'
);


$out[]=array(
	'cat_name'=>'cat1',
	'cat_id'=> '1',
	'vicove'=> $out1
);

$out[]=array(
	'cat_name'=>'cat2',
	'cat_id'=> '2',
	'vicove'=> $out2
);

$j=json_encode($out);

echo $_GET['callback']. '('.$j.')';

?>

HTML:
<!DOCTYPE html>
<html>
	<head>
		 <meta http-equiv="content-type" content="text/html; charset=utf-8">
	</head>
<body>
	
<ul id="cats"><li>Category</li></ul>
<ul id="result"><li>Vicove</li></ul>


<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>

$(function(){
var mydata;
$.ajax({
	type: "GET",
	url: "/json.php",
	dataType: "jsonp",
	data: {},
	success: function(json){
		mydata=json;
		for(c in json){
			$('<li><a href="#" data-catid="'+c+'">'+json[c].cat_name+'</a></li>').appendTo('#cats');
		}
	}
});

function ListByCatId(catid){
	$('#result').find('li').remove();
	for(v in mydata[catid].vicove){
		$('<li>Title: '+mydata[catid].vicove[v].title_vic+' / Desc: '+mydata[catid].vicove[v].desc_vic+' / Link <a href="'+mydata[catid].vicove[v].link_vic+'">'+mydata[catid].vicove[v].link_vic+'</a></li>').appendTo('#result');
	}
}

$('#cats').on('click','a',function(e){
	e.preventDefault();
	catid=$(this).data('catid');
	ListByCatId(catid);
});

});

</script>
</body>
</html>
 
Re: За: Въпрос за ajax xml заявка към сървър

Re: За: Въпрос за ajax xml заявка към сървър

Я виж с това може ли да започнеш нещо:

json.php

PHP:
<?php
header('Content-type: application/json; charset=utf-8');


$out2[]=array(
	'title_vic'=>'title21',
	'desc_vic'=> 'desc21',
	'link_vic'=>'link21'
);

$out2[]=array(
	'title_vic'=>'title22',
	'desc_vic'=> 'desc22',
	'link_vic'=>'link22'
);


$out1[]=array(
	'title_vic'=>'title11',
	'desc_vic'=> 'desc11',
	'link_vic'=>'link11'
);

$out1[]=array(
	'title_vic'=>'title12',
	'desc_vic'=> 'desc12',
	'link_vic'=>'link12'
);


$out[]=array(
	'cat_name'=>'cat1',
	'cat_id'=> '1',
	'vicove'=> $out1
);

$out[]=array(
	'cat_name'=>'cat2',
	'cat_id'=> '2',
	'vicove'=> $out2
);

$j=json_encode($out);

echo $_GET['callback']. '('.$j.')';

?>

HTML:
<!DOCTYPE html>
<html>
	<head>
		 <meta http-equiv="content-type" content="text/html; charset=utf-8">
	</head>
<body>
	
<ul id="cats"><li>Category</li></ul>
<ul id="result"><li>Vicove</li></ul>


<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>

$(function(){
var mydata;
$.ajax({
	type: "GET",
	url: "/json.php",
	dataType: "jsonp",
	data: {},
	success: function(json){
		mydata=json;
		for(c in json){
			$('<li><a href="#" data-catid="'+c+'">'+json[c].cat_name+'</a></li>').appendTo('#cats');
		}
	}
});

function ListByCatId(catid){
	$('#result').find('li').remove();
	for(v in mydata[catid].vicove){
		$('<li>Title: '+mydata[catid].vicove[v].title_vic+' / Desc: '+mydata[catid].vicove[v].desc_vic+' / Link <a href="'+mydata[catid].vicove[v].link_vic+'">'+mydata[catid].vicove[v].link_vic+'</a></li>').appendTo('#result');
	}
}

$('#cats').on('click','a',function(e){
	e.preventDefault();
	catid=$(this).data('catid');
	ListByCatId(catid);
});

});

</script>
</body>
</html>
Благодаря ! Работи много добре , само не намирам голяма разлика в зареждането де , но все пак щом е препоръчително пред xml-a ...ще ползвам Jsona
 

Горе