2014-05-10 11 views
8

Na mojej stronie Bloggera ładuję posty z kanału JSON, link JSON wygląda tak.Ajax nie działa w IE, jeśli URL zawiera arabski znak

http://technopress-demo.blogspot.com/feeds/posts/default/-/LABEL NAME?alt=json-in-script&max-results=5 

To jest kod, którego używam, aby otrzymywać posty z powyższego adresu URL.

$.ajax({url:""+window.location.protocol+"//"+window.location.host 
    +"/feeds/posts/default/-/"+LABEL NAME 
    +"?alt=json-in-script&max-results=5", 
    type:'get',dataType:"jsonp",success:function(data){} 

Problem polega na tym, że gdy zmieniam nazwę "LABEL NAME" na arabską etykietę, posty nie ładowały się. Testowałem to z angielską etykietą i działa dobrze, ale mam problem z arabskimi. Próbowałem to odkodować URL, ale nie działa.

$.ajax({url:""+window.location.protocol+"//"+window.location.host 
    +"/feeds/posts/default/-/"+encodeURIComponent(LABEL NAME) 
    +"?alt=json-in-script&max-results=5", 
    type:'get',dataType:"jsonp",success:function(data){} 

To jest live demo problemu.

+3

Proszę określić _not working_ w Twoim przypadku. Czy otrzymujesz 404 z serwera lub jakiś inny błąd? Myślę, że to może być problem z mapowaniem zakodowanych adresów URL po stronie serwera, a nie po stronie klienta. – AVK

+0

Problem polega na tym, że posty nie wyświetlają się. Uwaga: Problem występuje tylko w IE. – Masked

+0

Był podobny problem w [http://stackoverflow.com/questions/17994759/arabic-text-doesnt-work-with-ie-jquery-ajax](http://stackoverflow.com/questions/17994759/arabic -text-doesnt-work-with-ie-jquery-ajax). Sprawdź, czy to pomaga. – AVK

Odpowiedz

0

W swojej żywo demo, usuwając

.shortext { 
    text-indent: -9999px; 
} 

Z CSS sprawia, że ​​wyglądają dobrze w IE dla mnie. Element div o id = "recent" i class = "recent shortext" wydaje się mieć różne oznaczenia w FF.

1

IE ma problemy z nieprawidłowo zakodowanymi adresami URL, ma również problemy z prostym <a href zawierającym znaki nie kodowane.

LABEL%20NAME zamiast LABEL NAME powinien działać.

Z JSONP, jQuery generuje <script src="http://technopress-demo.blogspot.com/feeds/posts/default/-/LABEL NAME?alt=json-in-script&max-results=5">, który ma niekodowany znak w nim.

Zamiast encodeURIComponent(LABEL NAME), stosowanie cudzysłowu:

encodeURIComponent("LABEL NAME") 

Ważne: Save Your plikiUTF-8 zakodowane.

enter image description here(pic z blog.flow.info)

Przykład która działa w IE (skopiowany z Firefox + Firebug):

enter image description here

+0

Twoje rozwiązanie działa, jeśli dodaję etykietę ręcznie, ale NAZWA LABELU jest zmienną, która pobiera etykietę z danych wprowadzanych przez użytkownika. – Masked

+0

@Masked Zmienne nazwy nie mogą zawierać białych znaków – DanFromGermany

+0

Wiem, że używam "NAZWA LABELU", aby wyjaśnić czytelnikowi, że ta zmienna jest odpowiedzialna za umieszczenie nazwy kategorii w moim szablonie. Używam "pl" (oznacza dla etykiety pocztowej). – Masked