Я пытаюсь создать простое мобильное приложение Jquery. Моя установка выглядит следующим образом:
- Клиент jQuery работает на localhost:9090/myapp.
- Мой сервер работает на localhost:9010/paperboy
- Поскольку я работаю в Windows, на стороне сервера я использую простой сервер, созданный с использованием «bottle», который представляет собой микрофреймворк Python.
- Сервер возвращает json по запросу, что я ясно вижу в Chrome или Firefox.
- Я проверил свой ответ, и это действительный JSON.
Проблема, с которой я столкнулся, заключается в том, что я хочу, чтобы мой клиент читал json из ответа сервера.
Но, поскольку это междоменная проблема, он не может этого сделать.
Вот мой код ajax для клиент:
$.ajax({
url: "http://localhost:9010/paperboy/toi",
type:"GET",
data:$(this),
dataType:"jsonp",
//jsonp:"callback", no support on the server
success:function(result){
console.log("ajax result: " + result);
},
error:function(e){
console.log("Error :" + e);
}
});
и мой код сервера бутылки:
from bottle import route, run, template, response
from paperboy import getToiNews
''' call http://localhost:9010/paperboy/toi in browser'''
@route('/paperboy/:source')
def index(source='All'):
print "requesting news list for %s" % source
resultJson = getToiNews()
response.content_type = "application/javascript"
return resultJson
run(host='localhost', port=9010)
Однако при запуске приложения я изначально получал «ошибку политики происхождения ajax», которая вскоре исчезла, как только я добавил тип контента на свой сервер.
Теперь вызов ajax проходит без ошибок, но всегда вызывает обработчик «ошибки». . Пробовал разные комбинации, но все тщетно. Одна вещь, которую я не мог понять, это добавление поддержки jsonp на мой сервер.
Я ценю любую помощь в этом вопросе и заранее благодарю вас за всю помощь.
Спасибо.