Wątek zablokowany 2014-10-17 08:50 przez dzek69.

Jak z JavaScriptu wyciągnąć liczbę z łańcucha znaków?

0

Mam taki problem mam skrypt ajaxowy, który służy do pobierania scieżki do zdjęcia i wyświetlanie tego zdjęcia na stronie i tam są hiperłącza wstecz i dalej i teraz, żeby wiedzieć jaki pobrać następne zdjęcie to trzeba znać ścieżkę do poprzedniego i teraz moje pytanie jest takie jak pobrać zmienną z w javascripcie i dalej jak wyodrębnić z tego liczbę tutaj jest kod.

<script language="javascript">
var XMLHttpRequestObject = false;
  if (window.XMLHttpRequest) {
    XMLHttpRequestObject = new XMLHttpRequest ();
  }
  else if (window.AtiveXObject) {
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  }
  function getData (dataSource, divID,i,akcja) {
    if(XMLHttpRequestObject) {
      var obj = document.getElementById(divID);
      var sciezka = obj.innerHTML; // tak próbowałem pobrać, ale nie wyświetłij scieżki do zdjęcia w tej zmiennej
	//document.write(sciezka);
      XMLHttpRequestObject.open("GET", dataSource + "?i=" + i + "&akcja=" + akcja);
      XMLHttpRequestObject.onreadystatechange = function ()
    {
    if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
        
        //document.write("sfdsf");
        /*if (setInterval("load",1000) ) {
	  obj.innerHTML = XMLHttpRequestObject.responseText;
        }*/
        //while (setInterval("load",1000) ) {
	  obj.innerHTML = XMLHttpRequestObject.responseText;
	  
	  //document.forms["form"].submit();
        //}
    }
    }
      XMLHttpRequestObject.send(null);
      //document.write("sfdsf");
    }
  }

Ten sam plik, ale php

<?
  //if ($_GET['i'] == "") {
  //  $_GET['i'] = 1;
  //  $x = 1;
  //  $j = 1;
 // }
  $i = $_GET["i"];
  if ($_GET["akcja"] == "wstecz") {
   // $j = $_GET['i']+2;
    $i--;
  }
  if ($_GET["akcja"] == "dalej") {
   // $x = $_GET['i']-2;
    $i++;
  }
  
print ("<H1>Przechwytywanie danych z Ajax</H1>


<div align=center><a href=javascript:getData('zdjecie2.php','targetDiv','$_GET[i]','wstecz')>wstecz</a></div>
<div id=targetDiv>
<p> Przechwycone dane będą tu</p>
</div>
<div align=center><a href=javascript:getData('zdjecie2.php','targetDiv','$_GET[i]','dalej')>dalej</a></div>"
);






?>

No i teraz plik z kodem PHP

 <?
if ($_GET["i"] == "") {
  $_GET["i"] = 1;
}
$i = $_GET["i"];
if ($_GET["akcja"] == "wstecz") {
  $i--;
}
else {
  $i++;
}

$sciezka = "./zdjecia/zdjecie$i.jpg";

print ("<img src=$sciezka>");



?>
1

po co Ci w ogole ajax, żeby serwer dodał/odjął jedynkę od podanej liczby? o.O

dalej nie rozumiem w którym KONKRETNIE miejscu stoisz, czego oczekujesz, a co dostajesz.

0

Jestem w tym miejscu

var sciezka = obj.innerHTML; // tak próbowałem pobrać, ale nie wyświetłij scieżki do zdjęcia w tej zmiennej

Nie wiem dlaczego, ale w tej zmiennej powinna być ścieżka do zdjęcia, a jej nie ma.

0

Nie wiem jakiej konkretnie chcesz pomocy, ale skorzystaj z jQuery to nie będziesz mieć problemów z pobieraniem tekstów i wysyłaniem AJAXowych requestów:
pobierz stąd:
http://jquery.com/

przeczytaj te trzy sstronki wraz z przykładami:
http://api.jquery.com/category/selectors/ (albo tylko to: http://api.jquery.com/id-selector/ )
http://api.jquery.com/text/
https://api.jquery.com/jQuery.ajax/

i powinieneś dać radę

0

Mi chodzi o to jest sobie hiperłącze

<div align=center><a href=javascript:getData('zdjecie2.php','targetDiv','$_GET[i]','wstecz')>wstecz</a></div>

i w tym miejscu jest pokazywane zdjęcie

<div id=targetDiv>
<p> Przechwycone dane będą tu</p>
</div>

No i teraz
Ta funkcja odpowiada za załadowanie zdjęcia skomentuje ją

 function getData (dataSource, divID,i,akcja) {
    if(XMLHttpRequestObject) {
      var obj = document.getElementById(divID);
      var sciezka = obj.innerHTML; // w tym miejscu jakoś musze pobrać scieżkę do zdjęcia, żeby z niej wyodrębnić liczbę, ale w tej zmiennej nawet nie mogę pobrać ścięzki do zdjęcia.
    //document.write(sciezka); //próbował ją wydrukować, ale zwraca tylko napis przechwycone dane będą tu
      XMLHttpRequestObject.open("GET", dataSource + "?i=" + i + "&akcja=" + akcja); // w tym miejscu jest przekazywanie do strony z PHP zmiennych $_GET
      XMLHttpRequestObject.onreadystatechange = function ()
    {
    if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
 

      obj.innerHTML = XMLHttpRequestObject.responseText;


      
 


    }
    }
      XMLHttpRequestObject.send(null);

    }
  }
1

@dzek69 ma racje. Z tego co widze to tutaj inkrementujesz tylko wartosc liczbowa. Stad tez wystarczy i++ uzyc - podobnie jak w PHP. Odpowiadajac na pytanie zawarte w temacie: mozna to zrobic np. za pomoca regexp:

'foo123bar'.replace(/[^\d.]/g, ''); // rezultat: 123
0
  1. Jak używasz attrybutów w tagach htmlowych to zawsze używaj cudzysłowiów:
itd.. Większość przeglądarek kiedyś to poprawiało, aczkolwiek jest to niepoprawne w xhtml jest to niepoprawne, ale tam jest to bardziej restrykcyjnie sprawdzane 2. Upewnij się, że funkcja getData jest wywoływana. Wstaw alert w pierwszej linii: alert("getData dziala"); 3. Wstaw alerta za ta linia zeby sprawdzic czy na pewno nie dziala: ```javascript var sciezka = obj.innerHTML; alert(sciezka); ```

1 użytkowników online, w tym zalogowanych: 0, gości: 1