Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX][JavaScript]Pobieranie wartości z dynamicznego inputa
Puchatek320
post
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 4.11.2019

Ostrzeżenie: (0%)
-----


Cześć,

Tworzę inputa z treścią przez js

<input name="js_test[]" class="db" type="hidden" id="1" value="mail">
<input name="js_test[]" class="db" type="hidden" id="1" value="test">
<input name="js_test[]" class="db" type="hidden" id="1" value="maks">
<input name="js_test[]" class="db" type="hidden" id="1" value="bartek">

i teraz chciałbym pobrać wszystkie wartości z tych inputów za pomocą ajax i wysłać do skryptu php

  1. if(!empty($_POST['js_test']))
  2. {
  3. foreach ($_POST['js_test'] as $key=>$test_js)
  4. {
  5. $test_js = mysqli_real_escape_string($mysqli,$test_js);
  6.  
  7.  
  8. $query = $mysqli->query("SELECT * FROM test WHERE name like '".$test_js."'");
  9.  
  10. while ($row = $query->fetch_array(MYSQLI_ASSOC)) {
  11. $id_test = $row['id'];
  12. }
  13.  
  14. $upTags = "INSERT INTO films_tags (`id_t`,`imie_id`,`nazwa_id`) VALUES (null, '$id', '$id_test')";
  15. if ($mysqli->query($upTags) === TRUE) ;
  16. }
  17. }


Normalnie ze zwykłego inputa pobieram to tak
var n_short = document.getElementById("n_short").value;

Tutaj próbuje

var multiTag = document.getElementsByName("js_test[]");
i pojawia się
NodeList
TypeError: 'stepUp' called on an object that does not implement interface HTMLInputElement.

I tutaj pojawia się pytanie jak mógłbym to przesłać ajaxem? tak żebym nie musiał modyfikować skryptu php o ile to możliwe.



Ten post edytował Puchatek320 24.03.2020, 01:53:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Metoda getElementsByName zwraca listę węzłów (tablicę), więc musisz iterować po niej, aby zostać się do każdego elementu po kolei.
Go to the top of the page
+Quote Post
Puchatek320
post
Post #3





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 4.11.2019

Ostrzeżenie: (0%)
-----


Ajaxem nie mozna przesłać całej tablicy array tak żeby to obrobić później w php?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Mozna, ale masz przeslac tablice wartosci z inputow a nie tablice inputow. Temu zrob jak ci powiedziano

I juz tak na marginesie
if ($mysqli->query($upTags) === TRUE) ;
po co dajesz tam IF ktory totalnie nic nie robi?
Go to the top of the page
+Quote Post
trueblue
post
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Można.
Wysyłasz ciąg zmiennych: js_test[]=mail&js_test[]=test&js_test[]=maks, itd.
Go to the top of the page
+Quote Post
Puchatek320
post
Post #6





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 4.11.2019

Ostrzeżenie: (0%)
-----


okey, iteruje po nodelist problem w tym że dalej nie wiem jak pobrać z nich value i zapisać do array tak żeby to przesłać ajaxem?

for (var i = 0; i < multiTag.length; i++) {
console.log(multiTag[i]);

}
Go to the top of the page
+Quote Post
trueblue
post
Post #7





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Skoro multiTag[i] to konkretny element, to wartość jest pod value:
multiTag[i].value
Na podstawie tych wartości tworzysz ciąg jak pokazałem Ci wyżej (podstawiając tam te wartości). Taki query string wysyłasz jako zmienne GET lub POST.
Go to the top of the page
+Quote Post
Puchatek320
post
Post #8





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 4.11.2019

Ostrzeżenie: (0%)
-----


Nie robię tego w prawidłowy sposób ?
zamiast value konsola pokazuje

NodeList(3) [ input#1, input#2, input#3 ]

  1. var multiTag = document.getElementsByName("js_test[]");
  2.  
  3. for (var i = 0; i < multiTag.values(); i++) {
  4. console.log(multiTag[i].value);
  5. var do_wyslania = multiTag[i].value
  6. }
  7. var odebrane = do_wyslania;


Go to the top of the page
+Quote Post
trueblue
post
Post #9





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A nie dostrzegasz różnicy jak budowałeś wcześniej pętlę, a jak obecnie?
Go to the top of the page
+Quote Post
Puchatek320
post
Post #10





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 4.11.2019

Ostrzeżenie: (0%)
-----


No tak...

Pytanie jak przypisać całą tablicę do zmiennej do_wysłania?

  1. for (var i = 0; i < multiTag.length; i++) {
  2. console.log(multiTag[i].value);
  3. var do_wyslania = [multiTag[i].value,]
  4. }
  5. console.log(do_wyslania);


ponieważ jeśli użyję zmiennej do_wysłania po za pętlą to wyświetla ostatni wynik co jest normalne i nie wiem jak to obejść żeby w tej zmiennej zamiast już wszystkie wyniki
Go to the top of the page
+Quote Post
trueblue
post
Post #11





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Wartości do tabeli dodaje się metodą push: https://developer.mozilla.org/pl/docs/Web/J...ekty/Array/push
Go to the top of the page
+Quote Post
viking
post
Post #12





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


A jeszcze lepiej
https://developer.mozilla.org/en-US/docs/Web/API/FormData
Go to the top of the page
+Quote Post
Puchatek320
post
Post #13





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 4.11.2019

Ostrzeżenie: (0%)
-----


Skorzystałem z pushed ale zamiast dodawać to tworzy nową tablicę za każdym razem.

pushed = multiTag.push(do_wyslania,);
Go to the top of the page
+Quote Post
trueblue
post
Post #14





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Tablicę deklarujesz przed pętlą, w pętli wstawiasz do tablicy wartość każdego input z pomocą metody push.
Go to the top of the page
+Quote Post
Puchatek320
post
Post #15





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 4.11.2019

Ostrzeżenie: (0%)
-----


Dziękuje!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 04:23