Web2py 在本地和在线版本上请求不同的行为(服务器代码执行,但 returns 404 错误)

Web2py request different behavior on local and online version (server code executes, but returns 404 error)

在我的本地版本的应用程序上,使用以下代码发出请求,在服务器上执行代码,成功返回。

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

但是,如果我像这样发出请求(在 serverFunction 之后没有'.json')

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

服务器代码执行,但 returns 出现 404 错误。

在在线版本中,returns 两种情况下都会出现 404 错误,执行服务器代码。

假设 serverFunction returns 一个字典,默认情况下 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'

不清楚为什么没有 .json 扩展名的本地请求会出现 404 错误——必须查看更多代码才能解决这个问题。