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
if(!http://www.php.net/empty($_POST['js_test'])) { foreach ($_POST['js_test'] as $key=>$test_js) { $test_js = mysqli_real_escape_string($mysqli,$test_js); $query = $mysqli->query("SELECT * FROM test WHERE name like '".$test_js."'"); while ($row = $query->fetch_array(MYSQLI_ASSOC)) { $id_test = $row['id']; } $upTags = "INSERT INTO films_tags (`id_t`,`imie_id`,`nazwa_id`) VALUES (null, '$id', '$id_test')"; if ($mysqli->query($upTags) === TRUE) ; } }
Metoda getElementsByName zwraca listę węzłów (tablicę), więc musisz iterować po niej, aby zostać się do każdego elementu po kolei.
Ajaxem nie mozna przesłać całej tablicy array tak żeby to obrobić później w php?
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?
Można.
Wysyłasz ciąg zmiennych: js_test[]=mail&js_test[]=test&js_test[]=maks, itd.
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]);
}
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.
Nie robię tego w prawidłowy sposób ?
zamiast value konsola pokazuje
NodeList(3) [ input#1, input#2, input#3 ]
var multiTag = document.getElementsByName("js_test[]"); for (var i = 0; i < multiTag.values(); i++) { console.log(multiTag[i].value); var do_wyslania = multiTag[i].value } var odebrane = do_wyslania;
A nie dostrzegasz różnicy jak budowałeś wcześniej pętlę, a jak obecnie?
No tak...
Pytanie jak przypisać całą tablicę do zmiennej do_wysłania?
for (var i = 0; i < multiTag.length; i++) { console.log(multiTag[i].value); var do_wyslania = [multiTag[i].value,] } console.log(do_wyslania);
Wartości do tabeli dodaje się metodą push: https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Obiekty/Array/push
A jeszcze lepiej
https://developer.mozilla.org/en-US/docs/Web/API/FormData
Skorzystałem z pushed ale zamiast dodawać to tworzy nową tablicę za każdym razem.
pushed = multiTag.push(do_wyslania,);
Tablicę deklarujesz przed pętlą, w pętli wstawiasz do tablicy wartość każdego input z pomocą metody push.
Dziękuje!
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)