2015-11-21 3 views
0

Мне нужна помощь с кодировкой символов. Я хочу открыть апи как JSONP:Кодировка символов для json2jsonp

http://api.mymemory.translated.net/get?q=<some phrase>&langpair=de|en 

это работает:

http://json2jsonp.com/?url=http://api.mymemory.translated.net/get?q=Hund%26langpair=de|en&callback=cbfunc

, но это не делает:

http://json2jsonp.com/?url=http://api.mymemory.translated.net/get?q=Lösung%26langpair=de|en&callback=cbfunc

и L%C3%B6sung и L%25C3%25B6sung также не работает, даже если без json2jsonp, он отлично работает.

Любые идеи/альтернативы?

ответ

0

Кажется, что JSON2JSONP не поддерживает символы, отличные от ASCII. http://json2jsonp.com/?url=http%3A%2F%2Fapi.mymemory.translated.net%2Fget%3Fq%3DL%25C3%25B6sung%26langpair%3Dde%257Cen&callback=cbfunc должен возвращать правильный JSONP, но на самом деле происходит ошибка, потому что JSON2JSONP отправляет неверный запрос HTTP GET с GET /get?q=L\xc3\xb6sung&langpair=de|en HTTP/1.1, а не GET /get?q=L%C3%B6sung&langpair=de%7Cen HTTP/1.1.

Если вы можете использовать XMLHttpRequest и JSON.parse, вам больше не нужен JSONP.

var xhr = new XMLHttpRequest(); 
xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4 && xhr.status == 200) { 
     cbfunc(JSON.parse(xhr.responseText)); 
    } 
}; 
xhr.open("GET", "http://api.mymemory.translated.net/get?q=L%C3%B6sung&langpair=de%7Cen"); 
xhr.send(); 
+0

Спасибо! Будет ли эта работа также междоменной? – Argentoratum

+0

Кросс-доменные запросы, использующие этот код, работают в Firefox 3.5+, Chrome 3+, Safari 4+ и IE 10+. – anqooqie

Смежные вопросы