[ matobj @ 08.09.2010. 09:12 ] @
Pozdrav,
mozete li mi pomoci posto sa javascriptom bas nisam na ti :)

Dakle imam neku funkciju koja cita iz xml-a

Code:
 function parseXml(xml)
{
 $(xml).find("Records").each(function()
{
  var MojUrl = $(this).find("MojUrl").text()
});
}
});


E sad kako bi ja najlakse mogao dobiti ovu varijablu MojUrl kao neku "globalnu" varijabllu da je mogu koristiti u drugim funkcijama.

Dakle odmah zatim imam neku drugu funkciju di bi mi trebala ta varijabla


Code:
function ProvjeriUrl(str)
{
.
.
  }
xmlhttp.open("GET", MojUrl +"provjeri.asp");
xmlhttp.send();
}



Uf nadam se da ste skuzili :)
[ vujkev @ 08.09.2010. 09:31 ] @
Još uvek persiram javascriptu, ali ovo bi trebalo da je ovako (samo izbaciš deklaraciju promenljive van funkcije) :)

Code:

var MojUrl ;

 function parseXml(xml)
{
 $(xml).find("Records").each(function()
{
  MojUrl = $(this).find("MojUrl").text()
});
}
});
function ProvjeriUrl(str)
{
.
.
  }
xmlhttp.open("GET", MojUrl +"provjeri.asp");
xmlhttp.send();
}



[ Aleksandar Ružičić @ 08.09.2010. 09:54 ] @
jedno od pravila dobrog programiranja (i to ne samo u javascriptu) je izbegavati globalne promenljive. recimo, zasto ta funkcija parseXml jednostavno ne bi vratila taj url sto procita?

npr:
Code (javascript):

function parseXml(xml) {

 var mojUrl = '';

 $(xml).find("Records").each(function() {
    mojUrl = $(this).find("MojUrl").text()
  });

  return mojUrl;
}
 


i onda to koristis ovako:
Code (javascript):

function ProvjeriUrl(str) {
 .
 .
 .
 xmlhttp.open("GET", parseXml(str) +"provjeri.asp"); // pretpostavljam da ti str parametar predstavlja taj xml
 xmlhttp.send();
}
 


inace ona prva fja bi trebala da moze i ovako da se napise (mada ne znam tacnu strukturu xml-a, a i iskreno nisam nikada pomocu jquery-ja parsirao xml, ali pretpostavljam da treba to da radi kao i sa HTMLDocument-om):
Code (javascript):

function extractURL(xmlString) {
   return $(xmlString).find('Records MojUrl').text();
}
 
[ matobj @ 08.09.2010. 10:26 ] @
Evo ovo je cijela skripta pa ako pomogne. Bas sam tutlek za javascript, a ovo bi mi trebalo :(

Code:


var WebUrl = '';

$(function()
{
  $.ajax({
    type: "GET",
    url: "param.xml",
    dataType: "xml",
    success: parseXml
  });  


function parseXml(xml)
{
  $(xml).find("Records").each(function()
  {
    WebUrl = $(this).find("WebUrl").text(); 

});
}
});




function Provjeri(str)
{
if (str=="")
  {
  document.getElementById("UserError").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("UserError").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET", WebUrl + "provjeri.asp?url="+str,true);
xmlhttp.send();
}

[ Aleksandar Ružičić @ 08.09.2010. 11:29 ] @
1. nigde ne pozivas Provjeri funkciju, samo si je definisao
2. nema potrebe da u toj funkciji imas proveru browsera jer vec koristis jQuery za ajax

evo probaj ovako nesto:
Code (javascript):

$(function() {
  $.ajax({
    type: "GET",
    url: "param.xml",
    dataType: "xml",
    success: function(xml) {
      $.get('provjeri.asp', {url: $(xml).find('Records WebUrl').text()}, function(result) {
        $('#UserError').text(result);
      });
    }
  });  
});
 


samo vodi racuna da ti server taj param.xml fajl servira sa text/xml content-type headerom. vise o tome procitaj ovde: http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests
[ matobj @ 08.09.2010. 11:38 ] @
Ma ja tu funkciju Provjeri pozivam sa druge stranice, a ovu "globalnu" varijablu bi htio nekako dobiti da je mogu koristit u drugim funkcijama.
Kada napisem

var WebUrl = 'http://mojurl.com'

onda sve sljaka i ja je mogu procitat iz xml datoteke, ali ne znam kako da je onda odvojim da mi je i ostale funkcije vide.

Btw sve se funkcije nalaze u jednoj datoteci - moja.js
[ Aleksandar Ružičić @ 08.09.2010. 12:07 ] @
kako mislis pozivas je sa druge stranice? cak i globalna promenljiva je globalna samo za tu stranicu, cim odes na drugu pozdravi se sa svime sto ti je bilo u globalnim promenljivama :)

Citat:
var WebUrl = 'http://mojurl.com'

a to ti radi samo zato sto si time definisao konstantu (tacnije svaki put promenljivoj WebUrl dodeljujes konstantu 'http://mojurl.com') tako da ti je na svakoj strani ta promenljiva inicijalizovana sa tom vrednoscu
[ matobj @ 08.09.2010. 12:48 ] @
Ma OK :) Kazem da bas nisam sa javascriptom.
Dakle ovako:

Imam funkciju

Code:

var WebUrl = '';

$(function()
{
  $.ajax({
    type: "GET",
    url: "param.xml",
    dataType: "xml",
    success: parseXml
  });  


function parseXml(xml)
{
  $(xml).find("Records").each(function()
  {
    WebUrl = $(this).find("WebUrl").text(); 

});
}
});


Kako da sada sa tom ili nekom slicnom funkcijom dobijem neku globalnu varijablu za tu stranicu.
Dakle na toj stranici (mojaskripta.js) se nalaze i druge funkcije u kojima bi htio upotrebiti tu varijablu (value od te varijable) koju sam izvukao preko ove gore funkcije.

Sa ovim trenutno napisanim ne dobivam nikakav value za tu varijablu.

Kada bi unutar ove funkcije "parseXml" dodao jos npr. alert(webUrl) sve sljaka, ali kako da taj value dobijem da je mogu koristiti ostale funkcije.
[ Aleksandar Ružičić @ 08.09.2010. 12:54 ] @
pa rekoh ti, vrati tu vrednost preko return, tako ti ne treba globalna promenljiva, samo gde ti treba taj podatak pozoves tu funkciju i imas vrednost koja ti treba (mada, tu bi valjalo koristiti neko kesiranje, ali to sad bespotrebno komplikuje kod)
[ matobj @ 08.09.2010. 15:01 ] @
Riješio :)

Puna hvala na odgovorima!