Wątek przeniesiony 2015-12-14 11:26 z Webmastering przez dzek69.

Przekazywanie do skryptu php zmiennej tablicowej za pomocą ajax

0

Mam taki problem jest sobie pętla

  for ($i=0;$i<5;$i++) {
    print ("<input type=text id=nazwa[] name=pos>");
  } 

I teraz zadanie tej pętli to wydrukować pięć razy pole tekstowe i chodzi o to, żeby przekazać dane z tych pięciu pól tekstowych do skryptu za pomocą ajax czyli tak, żeby np. w skrypcie PHP 1 element miał wartość $_GET["nazwa"][0] coś w tym rodzaju. I moje pytanie jest takie jak to zrobić.

0

normalnie.

pokaż jakiś fragment kodu jak w ogóle obsługujesz zapytania ajax

0

Tak mój kod wygląda

   <?php
  
  print ("<form method=get name=pos></form>");
  
  for ($i=0;$i<5;$i++) {
    print ("<input type=text id=nazwa[] name=pos>");
  }
  print ("<input type = \"button\" value =\"Dodaj substancje\"
    onclick = \"getData2('dodaj.php',
    'dodaj')\">");
      print ("<div id=dodaj></div>
  ");

?>
<script language="javascript">
var XMLHttpRequestObject = false;
  if (window.XMLHttpRequest) {
    XMLHttpRequestObject = new XMLHttpRequest ();
  }
  else if (window.AtiveXObject) {
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  }
function getData2 (dataSource, divID) {
    if(XMLHttpRequestObject) {
      var obj = document.getElementById(divID);
      //var obj = document.getElementById(divID);
      //var i = 0;
      //while (document.getElementById('nazwa' + i) != "") {
      var nazwa[] = document.getElementById('nazwa[]').value;
      //var nazwa = document.getElementById('nazwa0').value;
      //i++;
      //}
     /* var nazwa2 = document.getElementById('nazwa2').value;
      var dawka = document.getElementById('dawka').value;
      var dawka2 = document.getElementById('dawka2').value;
      var opis2 = document.getElementById('opis2').value;
      var rok = document.getElementById('rok').value;
      var miesiac = document.getElementById('miesiac').value;
      var dzien = document.getElementById('dzien').value;
      var godzina = document.getElementById('godzina').value;
      var minuta = document.getElementById('minuta').value;*/
      XMLHttpRequestObject.open("GET", dataSource + "?nazwa[]=" + nazwa[] );
      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");
    }
  }
  
  </script>
1

o w mordę, goły ajax + wsparcie dla IE z czasów prądu łupanego.

nie lepiej skorzystać z biblioteki do tego (dowolnej)? tam takie rzeczy ogarniesz w 2 linijki

0

@pol90: ten formularz to Ci zbędny trochę, skoro otwierasz go, natychmiast zamykasz, a inputy są poza nim :p popraw kod tak, żeby formularz zawierał te inputy. A potem:

przykład w najpopularniejszym jQuery, bez ruszania tego onclicka:

function getData2(dataSource, divID) {
  $.get(dataSource, $(document.forms.pos).serialize(), function(result) {
    $('#'+divID).html(result);
  });
}

oprócz tego na końcu onclick dopisz średnik i po nim return false;

Rozwiązanie jest dalekie od ideału, bo masz wszystko od podstaw źle zaprojektowane, ale jak zaczynasz to przynajmniej nie męcz tych surowych ajaxów, tylko pobaw się jQuery (jest dużo kursów i pomocy w razie problemów).

0

Zrobiłem tak jak mi kazałeś, ale nadal nic nie działa.

   <?php
  
  print ("<form method=get name=pos>");
  
  //for ($i=0;$i<5;$i++) {
    print ("<input type=text id=nazwa name=pos>");
  //}
  print ("<input type = \"button\" value =\"Dodaj substancje\"
    onclick = \"getData2('dodaj.php',
    'dodaj'); return false;\">");
      print ("<div id=dodaj></div></form>
  ");

?>
<script language="javascript">
var XMLHttpRequestObject = false;
  if (window.XMLHttpRequest) {
    XMLHttpRequestObject = new XMLHttpRequest ();
  }
  else if (window.AtiveXObject) {
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  }
function getData2(dataSource, divID) {
  $.get(dataSource, $(document.forms.pos).serialize(), function(result) {
    $('#'+divID).html(result);
  });
}
  
  </script>
0
  1. Konsola. Byś chociaż przepisał błąd, który informuje o tym, że $ jest niezdefiniowane, bo na bank nie załadowałeś biblioteki jQuery
  2. Załaduj jQuery!
  3. Ten syf powyżej też możesz usunąć.
  4. Zapomniałeś zamknięcia form ;)

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