2016-08-10 4 views
1

В моей локальной версии приложения, выполняющего запрос с помощью следующего кода, выполняется код на сервере, который успешно возвращается.Web2py запрашивает различное поведение в локальной и онлайн-версии (код сервера выполняется, но возвращает ошибку 404)

$.ajax({ 
type: 'POST', 
url: "{{=URL('default', 'serverFunction.json')}}", 
data: {id: id} 
}); 

Однако, если я делаю запрос как так (без '.json' после serverFunction) код

$.ajax({ 
type: 'POST', 
url: "{{=URL('default', 'serverFunction')}}", 
data: {id: id} 
}); 

Сервер выполняет, но возвращает ошибку 404.

В онлайн-версии он возвращает ошибку 404 в обоих случаях, выполняя код сервера.

+0

'Расширение .html не является обязательным; .html считается значением по умолчанию. Расширение определяет расширение представления, которое отображает вывод функции контроллера f(). Так что во втором случае предполагается расширение .html. Я не уверен в этом. Прочитайте [URL] (http://web2py.com/books/default/chapter/29/04/the-core#Dispatching) –

ответ

3

Предполагая, что serverFunction возвращает словарь, по умолчанию web2py будет искать соответствующий/views/default/serverFunction.json вид. Если он не существует, он может вместо этого использовать представление /views/generic.json, но общие представления отключены по умолчанию. Приложение к строительству лесов включает в себя следующую строку:

response.generic_patterns = ['*'] if request.is_local else [] 

, который позволяет создавать общие представления только для локальных запросов. Вероятно, поэтому ваш запрос .json работает локально, но не удаленно. Если вы хотите использовать представление generic.json, в функции serverFunction, вы можете просто включить:

response.generic_patterns = ['json'] 

или:

response.view = 'generic.json' 

Не понятно, почему вы получаете ошибку 404 для локального запросы без расширения .json - должны были бы увидеть больше кода, чтобы помочь с этим.

+0

Я положил 'response.generic_patterns = ['json']' в начало всего *. py, которые включают в себя некоторые функции, связанные с вызовами ajax, и, похоже, проблема на стороне сервера – Yebach