![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Wysyłam metodą $.post() dane do serwera. Niestety przy odczytywaniu odpowiedzi jQuery pluje wyjątkiem.
Cytat Błąd: uncaught exception: Node cannot be inserted at the specified point in the hierarchy (NS_ERROR_DOM_HIERARCHY_REQUEST_ERR) Kod generujący XML wygląda tak:Plik źródłowy: http://localhost/proj1/web/script/query/jquery-1.2.6.js Wiersz: 238 I przy wywołaniu zwraca: Myślałem że błąd leży przy zamknięciu tagu <message> ale kiedy podmieniłem odpowiedź na: Problem pozostał ten sam. Nadal w konsoli Firefox'a widzę ten wyjątek. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 603 Pomógł: 131 Dołączył: 24.07.2007 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
IMHO to wina po stronie js. Pokaż to wywołanie ajaxa.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Kod function DrawingsRequest() { }
DrawingsRequest.page = 1; DrawingsRequest.Pane = new Pane(); DrawingsRequest.Pane.name = 'Drawings - LOG'; DrawingsRequest.Pane.content = '<ul>\n\ <li>Pobieram wyniki: <span class="request-time">0</span></li>\n\ <li class="debug"></li>\n\ </ul>' DrawingsRequest.Counter = new Counter(); DrawingsRequest.Counter.jump = 0.1; DrawingsRequest.Counter.meter = 0; DrawingsRequest.Counter.duration = 100; DrawingsRequest.Counter.eventRegister(function(){ DrawingsRequest.loading(); }); DrawingsRequest.send = function($trigger) { $().ajaxError(function(event, request, $settings){ DrawingsRequest.handleError($settings); }); DrawingsRequest.Pane.open(); DrawingsRequest.Counter.start(); $($trigger).attr('disabled', 'disabled').blur(); $.post(Website.getDomain()+'drawings/', DrawingsRequest.preparate(), function($response) { DrawingsRequest.handleResponse($response); }); } DrawingsRequest.handleError = function($settings) { DrawingsRequest.Counter.stop(); $('.debug', DrawingsRequest.Pane.jquery).html('Błąd połączenia z ' + $settings.url + '.'); } DrawingsRequest.loading = function() { var $time = new String(DrawingsRequest.Counter.meter); $('span.request-time', DrawingsRequest.Pane.jquery).html($time.substr(0, $time.indexOf('.') + 2)); } DrawingsRequest.preparate = function() { return { page: DrawingsRequest.page }; } DrawingsRequest.handleResponse = function($response) { DrawingsRequest.Counter.stop(); $('#drawings').html($response); } |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 603 Pomógł: 131 Dołączył: 24.07.2007 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
W odpowiedzi wysyłasz plik xml ale nie odbierasz tego jako xml, a jako zwykły tekst (vide pseudokod poniżej)
Kod $.post(url, data, callback, "TYP ODPOWIEDZI, PATRZ DOKUMENTACJA"); Proponuję: 1) zrobić odbiór jako xml - ale nie wiem jak to się wtedy ma do wstawiania do treści (możliwe, że dalej będzie ten sam błąd) 2) wywalić nagłówek xmlowski z odpowiedzi przesyłanej stronie. [to bym osobiście spróbował zrobić] |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Dzięki.
xml nic nie dało. Skasowanie funkcji header() też nie. Ustawiłem typ na 'html' i kod: Kod alert('Headers:\n' + $response.getAllResponseHeaders() + '\n' zaczął wyświetlać mi:+ 'responseXML: ' + $response.responseXML + '\n\n' + 'responseText: ' + $response.responseText + '\n\n' + 'status: ' + $response.status + '\n\n' + 'statusText: ' + $response.statusText); (IMG:http://img301.imageshack.us/img301/3998/aaaangk.jpg) Teraz mam tylko problem z dobraniem się do zwróconej treści. alert($('error message', $response.responseXML).html()) niestety nie działa. Natomiast po przypisaniu odpowiedzi do dokumentu ( .append() ) mogę się dobrać do zwróconych danych. Wolałbym to jednak zrobić bez konieczności przypisywania ich. Jest to do zrobienia? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 603 Pomógł: 131 Dołączył: 24.07.2007 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Mi w tej chwili nic takiego na myśl nie przychodzi.
Może wpisuj tą odpiwiedz do niewidocznego diva? albo może warto przerzucić się na JSONa? |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
W sumie chętnie bym się przerzucił na JSONa, ale strasznie irytuje mnie fakt że nie umiem wyświetlić w jakiś prosty sposób zawartości obiektu.
Chciałbym móc testować odpowiedzi za pomocą JSowej wersji var_dump() w stylu xdebug'a, a niestety nie mogę znaleźć takiego czegoś. Byłoby to zapewne o wiele lepsze rozwiązanie niż tworzenie XMLi bo przede wszystkim szybsze. Problemem jest jednak dla mnie wyświetlenie zawartości. Zwróciłeś zapewne uwagę że testując XMLHttpRequest zwracany przez wywołanie AJAX'a użyłem alerta wymieniając wszystkie jego pola... strasznie to niewygodne. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 603 Pomógł: 131 Dołączył: 24.07.2007 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Nie testowałem (ale jestem pewien), że jeśli wrzucisz sobie obiekt JSON do firebuga (console.log(twojObiektJSON)) to będziesz miał dostęp do poszczególnych kluczy i wartości w obiekcie JSON.
Co do var_dumpa to może TO Ci pomoże:> |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie. Poczytałem treść z linka który podałeś, pogmerałem trochę i przepisałem kod na rozszerzenie jQuery.
Kod jQuery.dump = function(element, limit, depth) Jeśli ktoś z was będzie to uruchamiał, pamiętajcie że FF ma automatyczne blokowanie wyskakujących okien i nie zdziwcie się jeśli dostaniecie informację że zmienna $winpop ma wartość null. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
{ depth = depth?depth:0; limit = limit?limit:1; var returnString = '<ol>'; for(property in element) { //Property domConfig isn't accessable if (property != 'domConfig') { returnString += '<li><strong>'+ property + '</strong> <small>(' + (typeof element[property]) +')</small>'; if (typeof element[property] == 'number' || typeof element[property] == 'boolean') returnString += ' : <em>' + element[property] + '</em>'; if (typeof element[property] == 'string' && element[property]) returnString += ': <div style="background:#C9C9C9;border:1px solid black; overflow:auto;"><code>' + element[property].replace(/</g, '&lt;').replace(/>/g, '&gt;') + '</code></div>'; if ((typeof element[property] == 'object') && (depth < limit)) returnString += jQuery.dump(element[property], limit, (depth + 1)); returnString += '</li>'; } } returnString += '</ol>'; if(depth == 0) { var $winpop=window.open("", "","width=800,height=600,scrollbars,resizable"); $winpop.document.write('<pre>'+returnString+ '</pre>'); } return returnString; }; |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 22:49 |