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

Jak odróżnić od siebie dwie takie same nazwy w stringu?

Object Storage Arubacloud
0 głosów
285 wizyt
pytanie zadane 27 maja 2020 w JavaScript przez Kubs Mądrala (5,190 p.)
edycja 28 maja 2020 przez Kubs

Witajcie,

mam dwa różne obiekty o takiej samej nazwie w parametrze i

"properties": {
                        "name": "Auto",
                     }

dla odróżnienia ich dodałem do nazwy jednego z nich kropkę czyli

"properties": {
                        "name": "Auto.",
                     }

Czy jest możliwość użycia jakichś znaków w tym stringu, które będą niewidoczne już potem na stronie?

Teraz wyświetla mi się Auto i Auto. 

Nie wygląda to jednak profesjonalnie.

 

UAKTUALNIENIE postu o kod, który używa właściwości name 

function changeContent() {	
				fetch("moja strona www/update.php?content=" + $("#txtEditor").Editor("getText") + "&bizName=Auto")
				  console.log($("#txtEditor").Editor("getText"))
				  }

 

komentarz 27 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)
Chcesz dodawać do propertisa znak, który będzie niewidoczny w HTML tylko po to, aby odróżnić te 2 obiekty? To nie lepiej dać im po dodatkowym propertisie pozwalającym na rozróżnienie tych obiektów?
komentarz 27 maja 2020 przez Kubs Mądrala (5,190 p.)
To brzmi rozsądnie. To jak to zrobic? Tyle, ze musze potem uzyc ich nazw w kodzie. Nie mam juz odpalonego kompa ale to jest cos takiego  #bizName "Auto" a w drugim #bizName "Auto."
komentarz 28 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)

musze potem uzyc ich nazw w kodzie

W kodzie HTML? To, jak zasugerował @niezalogowany, identyfikuj obiekty wg np. property o nazwie id, a wyświetlaj w HTML inne propertisy obiektów.

Czy jest jakieś dodatkowe kryterium budowy tych obiektów, o którym nie wspomniałeś, a które koliduje z dodawaniem propertisów o unikalnej wartości (celem identyfikacji tych obiektów)?

komentarz 28 maja 2020 przez Kubs Mądrala (5,190 p.)

Oprocz name mam jeszcze właściwości address phone. Tylko to name musi byc takie same i stwarza problem. Czyli dodac to id a potem wywolac cos w stylu #bizName "Auto" + #bizId "1"  ?

Jutro dorzuce kod wywolujacy.

komentarz 28 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)

wywolac cos w stylu #bizName "Auto" + #bizId "1"

Czym jest ten zapis? Wygląda jak selector CSS, ale nie jest prawidłowy. Co chcesz tym zapisem osiągnąć?

komentarz 28 maja 2020 przez Kubs Mądrala (5,190 p.)
Napisze Ci jutro do południa kod. Zapewne wyjasni wiecej i latwiej bedzie nam sie porozumiec.
komentarz 28 maja 2020 przez Kubs Mądrala (5,190 p.)

@JSHolic, Witaj, uaktualniłem główny post. Zerknij proszę.

komentarz 28 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)

(Sformatowałem trochę kod, żeby lepiej się czytało.) 

const editorText = $("#txtEditor").Editor("getText");

fetch(
  "moja strona www/update.php?content=" + 
  editorText + 
  <strong>"&bizName=Auto"</strong>
);
console.log(editorText);

Ten fetch ma wysłać request pod URL, który zawiera tag HTML (swoją drogą to nie jest poprawny składniowo czysty JavaScript)? Czym jest to "&bizName=Auto"? Wygląda na dodatkowy parametr do zapytania, tylko dlaczego on jest zawinięty w tagi HTML?

Czy chcesz w parametrze bizName przekazać identyfikator obiektu? Po co to opakowywać w HTML?

komentarz 28 maja 2020 przez Kubs Mądrala (5,190 p.)

Ten <stron> dodałem tutaj na forum żeby wytłuścić bardziej miejsce użycia. :) Nie bierz proszę tego pod uwagę. Tak, w parametrze "&bizName=Auto" chcę przekazać identyfikator obiektu. Muszę użyć takich samych nazw ale żeby czymś się różniły dodałem do jednej kropkę. Teraz kombinuję coś w stylu:

 "properties": {
                        "name": "X",
                        "id": "Numer1"
                      }

i potem próbuję dodać ten "id": "Numer1" do tego kodu, ale nie działa:

function changeContent() {	
				fetch("moja strona www/update.php?content=" + $("#txtEditor").Editor("getText") + "&bizName=Auto" + "&bizId=Numer1")
				  console.log($("#txtEditor").Editor("getText"))
				  }

 

komentarz 28 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)

Rozumiem, że chcesz grupować obiekty po jakimś wspólnym propertisie i jednocześnie chcesz je indywidualnie odróżniać. Więc wg mnie wysłanie w requeście parametrów "&bizName=Auto" + "&bizId=Numer1" jest ok. 

potem próbuję dodać ten "id": "Numer1" do tego kodu, ale nie działa

Co konkretnie nie działa (są jakieś błędy w konsoli)? :) Początek URLa - "moja strona www" - nie jest prawidłowy (chyba, że to dopisałeś tylko poglądowo dla nas).

Czy $("#txtEditor").Editor("getText"), dodawane do parametrów requesta, zwraca prawidłową wartość?

komentarz 28 maja 2020 przez Kubs Mądrala (5,190 p.)

"&bizName=Auto" + "&bizId=Numer1"  - zmieniłem na taką wersję ale gdy dodaje tekst w obiekcie Numer1, to wciąż pojawia się on również w tym drugim obiekcie bez id.

komentarz 28 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)
O jakim dodawaniu tekstu w obiekcie mówisz? Może prościej będzie jeśli pokażesz strukturę obu obiektów przed dodawaniem tekstu i po, oraz kod tego dodawania.

Jeśli modyfikujesz (mutujesz) jeden obiekt i ta zmiana jest widoczna w drugim obiekcie, to znaczy że operujesz na referencji do jednego obiektu (przypisałeś obiekt z jednej zmiennej do innej zmiennej).
komentarz 28 maja 2020 przez Kubs Mądrala (5,190 p.)
edycja 28 maja 2020 przez Kubs

Mam dwa obiekty tego typu:

{
                    "properties": {
                        "name": "AutoKomis",
                        "id": "Numer1",
                        "category": "cars",
                        "address": "Piastowska 4",
                        "content": ""
                    }

{
                    "properties": {
                        "name": "AutoKomis",
                        "category": "cars",
                        "address": "Wojska Polskiego 12",
                        "content": ""
                    }

I gdy dodaje tekst do content obiektu pierwszego używając tej funkcji changeContent, to tekst pojawia się w dwóch tych obiektach zamiast tylko w tym o "id=Numer1".

Natomiast jeśli wyrzucę właściwość id i tylko zmienię nazwę pierwszego dodając kropkę czyli " AutoKomis." to wszystko działa. Tyle, że nie chcę zmieniać nazwy. 

Chyba, że są jakieś niewidzialne znaki, które można dodać do stringa w kodzie (w name), a nie będą widzialne w przeglądarce.

komentarz 28 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)

Funkcja changeContent, w formie którą pokazałeś, jedynie wysyła request i nie widać, żeby cokolwiek zmieniała w obiekcie. Więc nie rozumiem o jakie dodanie tekstu do obiektu chodzi. Jeśli zmiana zachodzi w dwóch obiektach, bo mają property name o tej samej wartości, a dopisanie id do parametrów requesta nic nie zmienia, to znaczy że funkcja/serwis przy zmianie bierze pod uwagę parametr name a nie id - tym bardziej, że piszesz że bez id, a ze zmienionym name, zamiana zachodzi w jednym obiekcie.

Prosiłem żebyś pokazał strukturę tych obiektów przed tą całą operacją i po - a pokazałeś po prostu te dwa obiekty. Nie pokazałeś też kodu, który zmienia coś w tych obiektach. Jak już wspomniałem, funkcja changeContent jedynie wysyła request - nie widać tam logiki, która by zmieniała cokolwiek na stronie, czy w strukturze danych aplikacji. Nie wyjaśniłeś też co robi wysłany request ani jakie dane zwraca.

Nie potrafię Ci pomóc, bo nadal nie do końca rozumiem o co chodzi i nie widzę w kodzie, który pokazujesz logiki, o której mówisz.

komentarz 28 maja 2020 przez Kubs Mądrala (5,190 p.)

Ja bardzo chętnie podam Ci więcej kodu żebyś pomógł mi rozwiązać ten problem, ale nawet nie wiem co tu jeszcze wysłać. Przeglądam go ale chyba jedynym problemem jest to, że gdzieś musi być ustawione branie pod uwagę TYLKO właściwości name, ale gdzie to może być?

komentarz 28 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)

Przecież napisałem co by mogło pomóc:

  • struktura obiektów przed zmianą i po zmianie
  • kod, który zmienia nazwę/tekst
  • co robi i co zwraca endpoint, pod który wysyłasz zapytanie przez fetch
komentarz 28 maja 2020 przez Kubs Mądrala (5,190 p.)
function changeContent() {    
                fetch("moja strona www/update.php?content=" + $("#txtEditor").Editor("getText") + "&bizName=Auto")
                  console.log($("#txtEditor").Editor("getText"))
                  }

Kombinuje i wydaje mi się, że to wszystko jest po prostu zrobione na sztywno. Gdyby chciał żeby ta funkcja była dla konkretnego obiektu, trzeba by ją chyba było napisać osobno. Dodawanie kolejnego &biz nic tu jednak nie zmienia na lepsze.

Tylko jak tu napisać osobną taką funkcje dla jednego obiektu?

co robi i co zwraca endpoint, pod który wysyłasz zapytanie przez fetch

 

mógłbyś wyjaśnić gdzie można zwykle znaleźć ten kawełek kodu o który pytasz? Bo nie bardzo rozumiem ten endpoint

 

komentarz 28 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)

mógłbyś wyjaśnić gdzie można zwykle znaleźć ten kawełek kodu o który pytasz? Bo nie bardzo rozumiem ten endpoint

Jeśli to Twoja strona, to pewnie masz dostęp do jej kodu, więc możesz sprawdzić, co zwraca zapytanie pod adres URL przekazany do fetch. Jeśli nie masz dostępu do kodu, to może masz chociaż dokumentacje i w niej powinno być napisane do czego jest ten endpoint i jakie możliwe odpowiedzi zwraca.

Poza tym, nadal nie odpowiedziałeś na moje pytania, a po raz któryś wkleiłeś ten sam kod funkcji changeContent... To prowadzi donikąd, bo kręcimy się w kółko. :)

komentarz 29 maja 2020 przez Kubs Mądrala (5,190 p.)

Wybacz pytanie,

co zwraca zapytanie pod adres URL przekazany do fetch

 tzn. co wysyłane jest z tego fetch? Jeśli tak, o którym miejscu w tym fetch mówisz?

komentarz 29 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)

fetch wykonuje zapytanie XHR (Ajax) pod adres URL, który podasz i zwraca Promise, który po rozwiązaniu przekazuje odpowiedź z serwera. Pytałem o zawartość tej odpowiedzi.

komentarz 29 maja 2020 przez Kubs Mądrala (5,190 p.)
On zwraca zwykły tekst.

Jeśli to jeszcze nie jest to o co pytasz napisz proszę jak sprawdzić co zwraca. Dla pewności to sprawdzę.
komentarz 29 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)
Pytając o to, co zwraca ten request, chciałem właśnie dowiedzieć się co konkretnie zwraca - czyli co to za tekst?

Kilka postów temu pytałem też o kilka innych rzeczy, na które do tej pory nie odpowiedziałeś...
komentarz 29 maja 2020 przez Kubs Mądrala (5,190 p.)

To tekst ktory sam wpisuje. Po prostu roznej tresci.

W odp. na pytania

$("#txtEditor").Editor("getText") - zwraca prawidlowo. 

  • struktura obiektów przed zmianą i po zmianie  - gdzie takie cos znaleźć w kodzie?

 

  • kod, który zmienia nazwę/tekst - tutaj nic nazwy name nie zmienia a tekst wpisuje na sztywno.

 

komentarz 29 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)

To tekst ktory sam wpisuje. Po prostu roznej tresci.

Co to znaczy, że ten fetch:

fetch("moja strona www/update.php?content=" + $("#txtEditor").Editor("getText") + "&bizName=Auto" + "&bizId=Numer1")

zwraca tekst, "który sam wpisujesz, tylko różnej treści"? W zapytaniu przesyłane są parametry bizName i bizId, więc po stronie serwera na ich podstawie (póki co, z tego co mówisz, parametr bizId nie ma znaczenia) zwracane są jakieś dane (twierdzisz, że tekst "który sam wpisujesz"). A skoro potrzebujesz rozróżniać obiekty przy zachowaniu tego samego property name (którego wartość zdaje się tutaj jest przypisywana do bizName), to dobrze by było wiedzieć jaki wpływ ma ten parametr bizName na zwracaną z serwera odpowiedź.

Poza tym, jeśli nie masz dostępu do kodu API (serwera), to dodanie parametru bizId nic Ci nie da (jak już zauważyłeś, że nie ma wpływu na odpowiedź), bo API możliwe, że bierze pod uwagę tylko parametr bizName - tutaj dobrze by było sprawdzić w dokumentacji API. Nie podałeś informacji o tym API, więc nie wiemy co można zdziałać od strony parametryzowania requesta.


Czy możesz pokazać cały kod tej aplikacji? Szkoda mojego i Twojego czasu na kręcenie się w kółko.

komentarz 30 maja 2020 przez Kubs Mądrala (5,190 p.)
A gdzie mam sprawdzić to API? Bo rzeczywiście pewnie jest tak jak mówisz z tymi parametrami.
komentarz 30 maja 2020 przez ScriptyChris Mędrzec (190,190 p.)

Nie wiem, bo URL w fetch'u nie jest prawidłowy (o czym już pisałem). O tym, gdzie szukać informacji o API też już pisałem.

komentarz 2 czerwca 2020 przez Kubs Mądrala (5,190 p.)

Wybacz lekkie opóźnienie w odpowiedzi. 'Dokopałem' się do pliku JS obsługującego tego fetch, który pewnie zawiera tą odpowiedź o którą pytałeś. Dzisiaj będę to przeglądał.

1 odpowiedź

0 głosów
odpowiedź 27 maja 2020 przez niezalogowany
Biały znak zamiast kropki, na przykład spacja.

Jest to jakieś rozwiązanie.. ale, do rozróżniania obiektów powinieneś używać klucza `id` zamiast `name`, którego wartość,  jak sam zauważyłeś, może się powtarzać
komentarz 27 maja 2020 przez Kubs Mądrala (5,190 p.)
Właściwie to probowalem ze spacja ale nie dzialalo. Musze odwolac sie potem w kodzie do nazwy cos w stylu #bizName "Auto"
komentarz 28 maja 2020 przez niezalogowany
W sensie.. szukasz w DOM-ie, elementu, który ma `.innerHTML` / `.textContent` o wartości `name`?
komentarz 28 maja 2020 przez Kubs Mądrala (5,190 p.)
Kurcze, nie jestem na tyle obyty w temacie i nie wiem czy Cie dobrze rozumiem. Zerknij prosze na moja odp. dla JSholik ciut wyzej.
komentarz 28 maja 2020 przez niezalogowany

Do elementu możesz dodać atrybut `data-*` i na jego podstawie szukać interesujących Cię elementów:

<ul>
  <li data-id="1">Auto</li>
  <li data-id="2">Auto</li>
  <li data-id="3">Auto</li>
</ul>
const el = document.querySelector('[data-id="2"]');
el.style.color = 'red';
komentarz 28 maja 2020 przez Kubs Mądrala (5,190 p.)
Witaj, uaktualniłem główny post o kod który wywołuje tą właściwość name. Zerknij proszę

Podobne pytania

0 głosów
2 odpowiedzi 159 wizyt
0 głosów
4 odpowiedzi 196 wizyt
pytanie zadane 30 maja 2015 w C i C++ przez keresmi Użytkownik (770 p.)
0 głosów
2 odpowiedzi 749 wizyt
pytanie zadane 25 sierpnia 2018 w HTML i CSS przez Layoutowiec Mądrala (5,470 p.)

92,579 zapytań

141,432 odpowiedzi

319,662 komentarzy

61,963 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!

...