scorpion10
19.03.2023, 17:51:14
Posiadam DIV z
id="jsn"<div id="jsn" style="border:solid 1px red;height:30px;width:99%;overflow:hidden;margin-left:2px;">
<?php echo json_encode
($dane); ?></div>
po kliknięciu w którego chcę przesłać do
JQuery zawartość tablicy
json_encode($dane) jako
json i tam najlepiej jeśli to możliwe odebrać go funkcja
serializeArray()wszystko było by pewno ok ale niestety dane do jQuery nie docierają. Brak jest błędów w console.log, status HTTP 200 ale dane sie nie pojawiają.
kod jquery
$(document).ready(function(){
$("#jsn").click (function() {
var params = $("#jsn").serializeArray();
//console.log(params);
$.post('modules/OprogramowanieEdit.php',params, function(res){
console.log(res);
},'json');
});
});
Jak to, poprawnie zrobić jak przesłać tą tablice
$dane z PHP nie przez formularz i przekazać do serializeArray() w jQuery lub jeśli nie da sie przez
serializeArray, to jak inaczej, najlepiej obrobić te dane z tablicy w JQ a potem przesłac poprzez Ajax ponowni do PHP.
trueblue
20.03.2023, 07:00:54
Dane z
jsn możesz pobrać poprzez:
http://api.jquery.com/text/
nospor
20.03.2023, 11:57:53
Problem nie ma zadnego zwiazku z php. Przenosze
Swoja droga po co w ogole zapisujesz to do diva anie bezposrednio do zmiennej?
Kod
var jsn = <?php echo json_encode($dane); ?>;
A potem w ajax
Kod
$.post('modules/OprogramowanieEdit.php',jsn, function(res){
console.log(res);
},'json');
scorpion10
20.03.2023, 17:03:44
div który tu jest, służy jako button, po jego kliknięciu ma uruchomić się obsługa w JQ.
Zapewne można to inaczej jeszcze zrobić, ale wybrałem taki sposób i nadal rozbijam się na
przesłaniu tej tablicy jsonem do JQ.
nospor
20.03.2023, 17:04:35
No dobra, trueblue ci podal jak pobrac zawartosc diva. zmieniles, sprawdziles?
scorpion10
20.03.2023, 17:37:59
Zmieniłem, i sprawdzam ale coś ze składnią mi nie wychodzi. Próbuje pobrać funkcją text() ten fragment php
z tablicą ale chyba daleki jestem od prawdy :-)
$("#jsn").on("click",function() {
var jsn = ("div#jsn").text("
<?php echo json_encode
($dane); ?>");
$.post('modules/OprogramowanieEdit.php',jsn, function(res){
console.log(res);
},'json');
});
w przeglądarce dostaje .text is not a function
nospor
20.03.2023, 17:41:05
Ty chyba losowo cos zmieniasz bez zadnego namyslu.
Jedyne co na chwile obecna miales zmienic to na to:
var params = $("#jsn").text();
console.log(params);
scorpion10
20.03.2023, 17:50:35
teraz w konsoli dostaje samo: [] czyli juz chyba ok bo to wyglada na pusta tablice...
Dzieki nospor, próbuje dalej dopracować sa. w JQ i JS nie jestem na bieżąco nieststey :-(
nospor
20.03.2023, 17:54:25
A to?
var params = $("#jsn").html();
console.log(params);
I pokaz kod po zmianach ktore zrobiles bo juz nie wierze ze wstawiasz to co trzeba
scorpion10
20.03.2023, 18:10:12
OK, tak w przypadku html() jak i text() są już dane w konsoli w formie
json. Czy teraz przekazując tą zmienną params
do Ajax powinienem bez problemów przesłać całą tablice ponownie do php ? A właściwie jak można teraz mając
te dane z tablicy w
params, przypisać do wybranej zmiennej jakąkolwiek wartość
index z tej tablicy ?
Niestety nie robiłem nigdy nic z tablicami w JQ i Ajax więc to dal mnie nowy teren.
$("#jsn").click (function() {
var params = $("#jsn").html();
console.log(params);
$.post('modules/OprogramowanieEdit.php',params, function(res){
console.log(res);
},'json');
});
nospor
20.03.2023, 18:39:05
W divie masz tekst json, a do ajax masz przeslac obiekt json czyli
var params = JSON.parse($("#jsn").html());
scorpion10
20.03.2023, 18:44:18
Nie wiem dlaczego,ale przy próbie parsowania Json, dostaje błąd w konsoli
Uncaught SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
coś ze skladnią syntax
nospor
20.03.2023, 18:51:46
pokaz co dokladnie zwraca
var params = $("#jsn").html();
console.log(params);
scorpion10
20.03.2023, 23:02:13
Takie dane zwraca bez parsowania jako json
[{"dns":"W-125-0027","model":"C440","producent":"LENOVO","ncrf":"CF\/PST\/487\/0000085319","nk":"IK\/PST\/XV\/31279","ID_sprzet":"5","kat":"Komputer AiO","pokoj":"18","nazwisko":"xxxx","imie":"xxx","pok_uzyt":"18"}]
EDIT:
Wielkie Dzięki @nospor, wiem już jak to z tym json-em w JQ, Ajax działa, dzięki twojej pomocy. To już kolejny raz, kiedy mogłem na Ciebie liczyć SZACUNEK ! za wiedzę i chęć pomocy innym
nospor
21.03.2023, 09:20:54
Cool

Mozesz pokazac jak wyglada finalny kod?
scorpion10
21.03.2023, 10:33:50
Dalsze problemy

.
Dynamicznie generowane div-y dostają swój ID, kolejno numerowany czyli ID='json0' pozniej ID='json1' itd.
w jquery po kliknięciu w danego DIV-a odczytuje poprawnie, po reakcji na
click .nazwa_klasy jego
id, ale
odczytane ID za nic nie mogę, przekazać poprawnie do funkcji parsowania JSON.parse(), dostaję w konsoli przeglądarki
Syntax ErrorCzy w argumencie t ej funkcji, niemożna używać zmiennej ? Jeżeli nie to jak inaczej rozwiazać taki problem by parsowane były
tablice z klikniętego div ?
$(".jjj").click(function () {
var div = $(this)[0]['id'];
var params = JSON.parse($("'#"+div+"'").html());
console.log(id);
var tab = $.ajax({
type: 'POST',
url: 'modules/OprogramowaniePlus.php',
data: {
tablica:params
}
});
tab.done(function (dane) {
$('#json').html(dane);
console.log("SUCESS !!!");
});
tab.fail(function () {
console.log('BŁĄD !!!!');
});
tab.always(function () {
console.log('ZAMYKAM POŁACZENIE');
});
});
nospor
21.03.2023, 10:44:31
Jak ty sobie lubisz komplikowac zycie.
Skoro klikasz w div, to przeciez juz masz ten div i nie musisz go szukac po id....
var div = $(this);
var params = JSON.parse(div.html());
scorpion10
21.03.2023, 11:24:54
Coś ze skladnią nie tak, dostaje w konsoli przeglądarki Syntax Error
Uncaught SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 485 of the JSON data$(".jjj").click(function () {
var div = $(this);
var params = JSON.parse(div.html());
console.log(div);
var tab = $.ajax({
type: 'POST',
url: 'modules/OprogramowaniePlus.php',
data: {
tablica:params
}
});
tab.done(function (dane) {
$('#json').html(dane);
console.log("SUCESS !!!");
});
tab.fail(function () {
console.log('BŁĄD !!!!');
});
tab.always(function () {
console.log('ZAMYKAM POŁACZENIE');
});
});
nospor
21.03.2023, 11:25:31
No to zobacz co zawiera
div.html()
scorpion10
21.03.2023, 11:46:22
ehh, przykleił się do diva <br> na końcu i zabużył json-a
Ale już ok. Nie wiem kiedy przyzwoicie sie zaprzyjaźnię z JQ ale trochę
to chyba potrwa. nie załapalem że
(This) w taki sposób moze identyfikować DIV-a
ja próbowałem wydostać z obiektu jaki tworzy identyfikator danego div, co się udało, ale
JSON.parse() takij kombinowanej zmiennej nie przyjmował :-)
--
EDIT
Czy da się aby ten div przesyłał tego jsona do JQ ale wyświetlal w PHP coś innego a nie zwaratość json-a ?
<div id="
<?php echo $jsn ?>" class='jjj' style='width:90%;border:solid 1px red;height:20px'>
<?php echo json_encode
($dane[$x]);?></div>
nospor
21.03.2023, 12:27:03
tak, dodajesz to do diva jako atrybut data- np data-json='tu twoj json'
i potem odczytujesz to nie z .html ale z .data("json")
scorpion10
21.03.2023, 13:52:26
CZyli tak powinien wyglądac div z
data- ?
<div id="
<?php echo $jsn ?>" data-json="
<?php echo json_encode
($dane[$x]); ?>" class='jjj' style='width:90%;border:solid 1px red;height:20px'></div>
a w JQ
$(".jjj").click(function () {
var div = $(this);
//var params = JSON.parse(div.html());
var params = JSON.parse(div.data("json"));
console.log(div);
var tab = $.ajax({
type: 'POST',
url: 'modules/OprogramowaniePlus.php',
data: {
tablica:params
}
});
tab.done(function (dane) {
$('#json').html(dane);
console.log("SUCESS !!!");
});
tab.fail(function () {
console.log('BŁĄD !!!!');
});
tab.always(function () {
console.log('ZAMYKAM POŁACZENIE');
});
});
Ale znów jakiś Syntax sie przyplątał
Uncaught SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data
nospor
21.03.2023, 14:18:32
Dosc wyraznie napislem ze tak ma byc:
data-json='<?php echo json_encode($dane[$x]); ?>'
specjalnie nie uzylem " bo twoj json zawiera " i najzwyklej by rozwalil html
scorpion10
21.03.2023, 14:25:29
no tak kolejna nauka dobra nauka :-) a ja myślałem że można zamiennie " lub ' a tu niestety w JQ jak widać nie, no teraz jest OK
nospor
21.03.2023, 14:28:01
Cos ty sie tak przyczepil tego JQ. Tego nie mozna bo JQ, tamtego nie mozna bo JQ....
Toz ci wyraznie mowie, twoje tekst co wkladasz zawiera cudzyslowia wiec jak wstawisz cudzyslowia do
data-json=" tezt z " wlasnie rozwalil ci to"
to masz rozwalone. Widzisz? Cudzyslow z data-json zostal zamkniety wczesniej przez twoj cudzyslow w tekscie.
Wiec przestan wszystko zwalac na JQ bo polowa tego co tu piszesz to twoje braki w podstawowej wiedzy html/js a nie wymysl JQ
scorpion10
21.03.2023, 14:56:53
Właśnie dlatego narzekam, bo zdaje sobie sprawę z moich braków ;-) Ale powoli z praktyką w końcu będe miał mnie problemów.
Teraz jednak borykam sie z prostymi rzeczami jak składnia. Pobierając obecnie do zmiennej ten znacznik data-
w poniższej wersji dostaje dane
$(".jjj").click(function () {
var d = $(this);
var div = $(d).data("json");
console.log(div);
});
a już jak próbuje to parsować to mam znów bład
Uncaught SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data$(".jjj").click(function () {
var div = $(this);
var params = JSON.parse(div.data("json"));
var tab = $.ajax({
type: "POST",
url: "modules/OprogramowaniePlus.php",
data: {
tablica:params
}
});
tab.done(function (dane) {
$("#json").html(dane);
console.log("SUCESS !!!");
});
tab.fail(function () {
console.log('BŁĄD !!!!');
});
tab.always(function () {
console.log('ZAMYKAM POŁACZENIE');
});
});
<div id='
<?php echo $jsn ?>' data-json='
<?php echo json_encode
($dane[$x]); ?>' class='jjj' style='width:90%;border:solid 1px red;height:20px'></div>
nospor
21.03.2023, 14:59:09
No i powtorka z rozrywki
CO dokladnie zwraca
console.log(div.data("json"));
?
scorpion10
21.03.2023, 15:05:17
Zwraca object i tak jest ok
Object { dns: "W-125-09", model: "C440", producent: "LENOVO", nf: "CI/P/487/0000085327", nik: "I/PS//362", ID_sprzet: "23", kat: "Komputer AiO", pokoj: "26", nazwisko: "xxxx", imie: "xxx", … }
Dlaczego wiec JSON.parser() zwraca syntax ...?
nospor
21.03.2023, 15:06:30
Skoro zwraca ci Object to juz nie musisz nic parsowac
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.