Wpis z mikrobloga

#programowanie #jquery #json #jsonp #ajax

Mireczki moje kolorowe. Robię sobie taki kawałek kodu (cross origin leci, więc musi być #jsonp)

$.getJSON( "http://localhost:8888/check/"+name+"/"+encodeURIComponent(url)+"/?jsoncallback=?", function(response){
console.log(response);
});

Serwer odpowiada tak:

"jQuery111008624766052234918_1447685302792({\"status\":\"new\"});"
Zgodnie z wszelkimi przykładami w sieci jakie znalazłem jQuery jakoś samo sobie powinno elegancko przyporządkować tą funkcję callback którą jQuery wygenerowało.
Jednak kod z funkcji anonimowej mającej się wykonać po sukcesie zapytania GET w ogóle się nie wywołuje.

Co robię źle, gdzie błądzę?
  • 32
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

jsoncallback a nie callback?


@rbielawski: @kmiasko: A niech mnie dunder świśnie! Wystarczyło zmienić jsoncallback(tak w sieci było pisało) na callback. W prawdzie teraz muszę jakoś obsłużyć te anonimowe nazwy funkcji, bo jak podam swoją w urlu to rzuca się o ten oridżin.

Więc dodałem ten nagłówek, co Rafał zaproponował i mogę nadać swoją nazwę funkcji. Wtedy jednak success nie strzela, ale na ten przykład w .complete dostaję 'responseText' który jest ewidentnie modyfikowany przez node, co oznacza, że to chyba prawidłowy sposób jazdy. (choć śmieszne, że success
  • Odpowiedz
@rbielawski: Kurdebele, a ja zawsze myślałem, że to działa w drugą stronę...
W sensie, że to strona Z której wykonuję zapytanie musi pozwalać na zewnętrzne źródła danych.

Trochę obciach, dzięki :)
  • Odpowiedz
@anonim1133: przeglądarka też musi się zgodzić, ale w to już nie wnikałem za bardzo. Generalnie musi obsługiwać CORS (czyli te nagłówki).

Cross-Origin Resource Sharing
The second technique for relaxing the same-origin policy is standardized under the name Cross-Origin Resource Sharing. This standard extends HTTP with a new Origin request header and a new Access-Control-Allow-Origin response header. It allows servers to use a header to explicitly list origins that may request
  • Odpowiedz