Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak sparsowac obiekt jQuery zwrócony przez ajaxa
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Sadamowski
witam,
mam problem albo zgłupiałem zmęczony tematem

robei zapytanie GET po jakis tam adres:

  1. $.ajax({
  2. type: 'GET',
  3. url: 'tu ten adresik/search',
  4. cache: false,
  5. dataType : 'script', //ale jsonp tez działa, reszta (np text) wywala bład
  6. data: {cb: 'jQuery18303185707158409059_1370954922211', q: 'cl', lang: 'en', _ : timest},
  7. success: function(html){
  8. alert(html);
  9. },
  10. error: function(data, status){
  11. alert('error: -> ' + status);
  12. }
  13. });
  14. });



zapytanie jest ok, tzn firebug pokazuje co sie dostało spowrotem, a mianowicie jest to json o postaci

  1. jQuery18303185707158409059_1370954922211({'data': {'QueryTerm': 'cl', 'Language': 'en', 'SuggestionItems': {0: {'Category': '', 'Weight': '99', 'Suggestion': 'cloud'}, 1: {'Category': '', 'Weight': '35', 'Suggestion': 'cloud security'}, 2: {'Category': '', 'Weight': '30', 'Suggestion': 'cloud development'}, 3: {'Category': '', 'Weight': '30', 'Suggestion': 'cloud application delivery'}, 4: {'Category': '', 'Weight': '25', 'Suggestion': 'cloud service automation'}, 5: {'Category': '', 'Weight': '25', 'Suggestion': 'cloud management'}, 6: {'Category': '', 'Weight': '20', 'Suggestion': 'client automation'}, 7: {'Category': '', 'Weight': '18', 'Suggestion': 'clip'}, 8: {'Category': '', 'Weight': '18', 'Suggestion': 'closed loop incident process'}, 9: {'Category': '', 'Weight': '18', 'Suggestion': 'closed loop incident process (clip)'}}}})


w firebugu mozna nawet podgladnąc sobie ten obiekcik

Mam dwa pyatnia
1. dostaje błąd: ReferenceError: jQuery18303185707158409059_1370954922211 is not defined , pytanie czemu?
2 najwazniejsze... jak dostać się do danych w tym obiekcie.... potrzebuje wyciągnąc wszystkie elementy "Suggestion"

czy problem jest w tm ze sa tam pojedyncze quotes a nie podwójne.
Każda sugestia mile widziana.
WiruSSS
przede wszystkim nazwy pól nie moga być typu number tylko string po drugie tak jak napisałeś, powinieneś uzyć " zamiast '
Sadamowski
no no.. jasne
tyle ze nie mam zadnego wpływu na to jak jest to zawrane bo jest to zewnętrzny serwis, do którego sie podpinam... jakis inny pomysł jak to obejść

a tak btw.. gdzie mam niby wyspecyfikowane ze nazwy pol biore jako numery?
WiruSSS
w kodzie, który podałeś kolejne elementy SuggestionItems nie są objęte cudzysłowem.
Na tej stronie jest ładnie opisany format json.

W najgorszej sytuacji mozna to co zwraca ajax dostosować do specyfikacji JSON.

Prosze podaj link do jakiego się odwołujesz ajaxem.
Sadamowski
aa.. dobra ..tam...myślałem ze coś gdzies w moim kodzie wypatrzyłeś. ok, ale tak jak mówiłem , to jest dla mnie tylko źródo danych i nie mam zadnego wpływu na co jest zwracane. To jest nasza wewnetrzna strona w wewnetrznej sieci wiec za chinskiego boga sie tam nie dostaniesz - a nie moge dorwac barana, ktory to pisał bo juz nie pracuje a potem ktos to przejmował i potem jeszcze ktos i nawet na gitcie nie ma sladów bo jakies jełopy nie puszowały zmian.

WiruSSS, dzieki za pomysły ale problem polega na tym ze przy jakimkolwiek innej metodzie odbioru danych 'text' albo 'html' (to akurat troche bez sensu) bo rzuca wyjątkiem. najchetniej przejąłbym to w postaci textu i zamienił wszystko na " ale ni cholera.
jakis pomysł skąd sie bierze ten ReferenceError: jQuery18303185707158409059_1370954922211 is not defined , moze od tego zaczne
WiruSSS
..może cb ..to po porstu callback ...z tego co zostaje zwracane, wygląda jakby ten obiekt został przekazany do funkcji którą przypisujesz do cb. Tak tylko głośno myślę. Może w twoim kodzie powinieneś zdefiniować funkcję (o nazwie którą podajesz w cb) i w niej odebrać ten obiekt z parametru tej funkcji?

[JAVASCRIPT] pobierz, plaintext
  1. function jQuery18303185707158409059_1370954922211(zwracany_obiekt){
  2.  
  3. //tutaj być moze jest dostep do etgo obiektu
  4. console.log(zwracany_obiekt);
  5.  
  6. }
[JAVASCRIPT] pobierz, plaintext


...swoją drogą ...dlaczego akurat taka dziwna nazwa?, nie znam specyfiki tej aplikacji.

[EDIT]
..czy wogóle cb jest wymagane? ...co się stanie jeśli nie podasz tego parametru? ...co wtedy zostanie zwrócone? ..może sam obiekt, który wtedy będziesz mógł przypisać sobie do zmiennej?
vonski
Jeżeli masz dataType ustawione jako 'script' to wydaje mi się, że nie dostajesz JSON-a tylko zwykły tekst - który wygląda jak JSON smile.gif
Czy jeśli masz dataType: 'json' to coś to zmienia? Chociażby ten ReferenceError?
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.