• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ajax - pobieranie danych z POST

Object Storage Arubacloud
0 głosów
828 wizyt
pytanie zadane 21 marca 2017 w JavaScript przez Zbigniew Andrysiak Bywalec (2,470 p.)

Witam

Mam takie pytanko. Mam formularz, w którym chcę aby dynamicznie zmieniało mi w bazie danych (UPDATE). Problem w tym, że niestety nie bardzo wiem, jak przesłać dane (ticket oraz Ktorobil) do pliku update.php. Poniżej kod.

function addElement(){
  // get new name
  var name = $("#newElementsName").val();
  var ticket = $_POST("ticket").val();
  // create ajax call
  $.ajax({
    method: "POST",
    url: "update.php", // URL to php script
    data: { // post data for php script (I use the data from your form (including the typo))
      ticket: ticket,
      save: 'Save'
    },
    success: function(data){
      // this function will be called when php script run successful (HTTP-Status 2xx)
      // Clear the input filed
      $("#newElementsName").val('');
      // Add new name to dropdown
      $("#newElementsName").append("<option>"+name+"</option>");
    }
  });  

Oraz kod PHP

<select class="btn-info" id="newElementsName" onchange="addElement('<?php $ticket = $row['ticket']; echo $ticket; ?>')" data-width="75%" data-style="btn-info" name="Ktorobil" >

<option value="<?php echo $row['Ktorobil']; ?>" selected="selected"><?php echo $row['Ktorobil']; ?></option>
<option value="XXX" <?php if($row['Ktorobil']=="XXX") {echo 'selected="selected"';} ?>>XXX</option>
<option value="ZZZ" <?php if ($row['Ktorobil']=="ZZZ") {echo 'selected="selected"';} ?>>ZZZ</option>
</select>

Pomożecie??

komentarz 21 marca 2017 przez Fenix Nałogowiec (26,750 p.)
A kod odpowiedzialny za obsłużenie ajax'a i 'Ktorobil' z czego wynika? zalogowany użytkownik?
komentarz 21 marca 2017 przez Zbigniew Andrysiak Bywalec (2,470 p.)
W tym miejscu onchange="addElement(..)" wywołuję AJAX. Ktorobił próbowałem wsadzić do onchange ale niestety chyba robię to niewłaściwie. Gdy robiłem alert() i upychałem tam ticket i Ktorobił to działało
komentarz 21 marca 2017 przez Fenix Nałogowiec (26,750 p.)
Nie rozumiem, dlaczego do addElement() wkładasz argumenty. Przy deklaracji, nie deklarujesz żadnych argumentów.
komentarz 21 marca 2017 przez Zbigniew Andrysiak Bywalec (2,470 p.)
To jak to zrobić, bo chciałbym z pętli w select wysyłać dane do pliku update. A niestety wysyła mi tylko jedną daną. Może jest jakiś sposób, żeby również w select wysłać numer ticketu?
1
komentarz 21 marca 2017 przez Fenix Nałogowiec (26,750 p.)
Ustawić atrybut z przedrostkiem data. I pobrać za pomocą element.getAttribute('data-nazwa');

I sobie poprostu przesłać.
komentarz 21 marca 2017 przez Zbigniew Andrysiak Bywalec (2,470 p.)

Ok z div sobie poradzę, ale jak sobie poradzić z select. W tej chwili mam:

<div1 dataticket="<?php $ticket = $row['ticket']; echo $ticket; ?>">
<select onchange="addElement()" class="btn-info" id="newElementsName"   data-width="75%"  name="Ktorobil" >

 

Ale gdy mam w pętli te dane to nie odczytuje mi Ticketu z pętli tylko pierwszy z pętli. Jak coś to pokażę więcej kodu.

komentarz 22 marca 2017 przez Zbigniew Andrysiak Bywalec (2,470 p.)

Dobra poddaje się. 

Z DIV wiem jak wyciągnąć dodatkowe dane. Niestety jak w select wpisuję to niestety mi się nie udaje. Kod poniżej. W kodzie Java wpisałem " TUTAJ CHCIAŁBYM WSTAWIĆ KOD KTÓRY WYSYŁAŁBY DANE DO UPDATE.PHP TICKET I NAME. JEDNAK ticket = ticket, - nie działa" chciałbym się Was podpytać (bo jesteście w tym lepsi ode mnie) jak załatwić, żeby z select wyciągnąć dane.

<select onchange="addElement()" class="btn-info" id="newElementsName"  dataticket="<?php $ticket = $row['ticket']; echo $ticket; ?>" data-width="75%"  name="Ktorobil" >
function addElement(){
  // get new name
  var name = $("#newElementsName").val();
  var ticket = document.getElementsByTagName("select")[0].getAttribute("dataticket"); 
alert(ticket);
alert(name);

  // create ajax call
  $.ajax({
    method: "POST",
    url: "update.php", // URL to php script
    data: { // post data for php script (I use the data from your form (including the typo))
    	TUTAJ CHCIAŁBYM WSTAWIĆ KOD KTÓRY WYSYŁAŁBY DANE DO UPDATE.PHP TICKET I NAME.
JEDNAK ticket = ticket, - nie działa      
save: 'Save'
    },
    success: function(data){
      // this function will be called when php script run successful (HTTP-Status 2xx)
      // Clear the input filed
      $("#newElementsName").val('');
      // Add new name to dropdown
      $("#newElementsName").append("<option>"+name+"</option>");
    }
  });  

}

 

1 odpowiedź

0 głosów
odpowiedź 22 marca 2017 przez Zbigniew Andrysiak Bywalec (2,470 p.)

Poradziłem sobie w ten sposób: (ale - jak zawsze jest ale, nie chce mi działać w pętli. To znaczy odczytuje mi tylko pierwszy ticket w pętli while - jak zrobić, żeby wysyłało mi ticket przypisany do danego selecta?)

function addElement(){
  // get new name
  var name = $("#newElementsName").val();
  var ticket = document.getElementsByTagName("select")[0].getAttribute("dataticket"); 

 alert(name),
 alert(ticket),
  // create ajax call
  $.ajax({
    method: "POST",
    url: "update.php", // URL to php script
    data: {
    ticket: ticket, name: name
    },
    success: function(data){
alert('Przypisano'); 
      $("#newElementsName").val('');

      $("#newElementsName").append("<option>"+name+"</option>");
    }
  });  

}

 

Kod Selecta oczywiście w pętli

<select id="newElementsName" onchange="addElement()" class="btn-info"   dataticket="<?php echo $row['ticket']; ?>" data-width="75%"  name="Ktorobil" >
<option value="<?php echo $row['Ktorobil']; ?>" selected="selected"><?php echo $row['Ktorobil']; ?></option>
<option value="XXX" <?php if($row['Ktorobil']=="XXX") {echo 'selected="selected"';} ?>>XXX</option>
<option value="YYY" <?php if ($row['Ktorobil']=="YYY") {echo 'selected="selected"';} ?>>YYY</option>
\</select>

 

komentarz 23 marca 2017 przez Zbigniew Andrysiak Bywalec (2,470 p.)
edycja 24 marca 2017 przez Zbigniew Andrysiak
Select są w pętli, więc może być ich kilka. Pytanie jak sobie pobrać do elementu "dataticket" z select i przypisać go do funkcji? Pomożecie?

<script>
function addElement(){
var all_select = document.getElementsByTagName("select");
for (i = 0; i < all_select.length; i++) {
    all_select[i].onchange = function () {
        alert(this.value);
 
    }
}
 
 $.ajax({
    method: "POST",
    url: "update.php", // URL to php script
    data: {
    ticket: ticket, name: all_select
    },
    success: function(data){
alert('Przypisano'); 
      $("#newElementsName").val('');
 
      $("#newElementsName").append("<option>"+all_select+"</option>");
    }
  });  
 
}
</script>  

 

 

<?php
foreach ($stmt as $row)
{ ?>
<select class="btn-info" id="newElementsName" onchange="addElement()"  dataticket="<?php echo $ticket; ?>"  data-width="75%" data-style="btn-info" name="Ktorobil" >
 
<option value="<?php echo $row['Ktorobil']; ?>" selected="selected"><?php echo $row['Ktorobil']; ?></option>
<option value="<?php echo $row['Ktorobil']; ?>" selected="selected"><?php echo $row['Ktorobil']; ?></option>
<option value="XXXXXX" <?php if($row['Ktorobil']=="XXXXXX") {echo 'selected="selected"';} ?>>XXXXXX</option>
<option value="YYYYYYY" <?php if ($row['Ktorobil']=="YYYYYYYY") {echo 'selected="selected"';} ?>>YYYYYY</option>
<option value="ZZZZZZ" <?php if($row['Ktorobil']=="ZZZZZZZZ") {echo 'selected="selected"';} ?>>ZZZZZZ</option>
 
</select>
<?php
}
?>

 

Podobne pytania

0 głosów
1 odpowiedź 728 wizyt
0 głosów
1 odpowiedź 138 wizyt
pytanie zadane 31 marca 2022 w JavaScript przez Klaudiaaa Początkujący (390 p.)
0 głosów
0 odpowiedzi 127 wizyt
pytanie zadane 17 stycznia 2023 w JavaScript przez Antoni2422 Użytkownik (570 p.)

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...