JSONP与Django的响应

Ann*_*nna 2 javascript python django json jsonp

我正在尝试做一些编码,进一步操作,等等等等,最后得到json对象并返回一个Jsonp(用javascript函数包装的json对象)

我设法创建直到json对象,这是

 js_on = {"name": "xxx","job":"unemployed", "remarks": "enjoying_life"}.
Run Code Online (Sandbox Code Playgroud)

我坚持做JSONP部分.我读过的教程非常混乱,需要多行编码.是真的那么复杂还是有更简单的方法呢?我的JSONP代码从以下开始.

 callback = request.GET.get('callback')
 if callback:
 ......
 ......
 return(HttpResponse(...,content_type ='application/javascript'))
Run Code Online (Sandbox Code Playgroud)

在服务器端,我使用的是Python和Django框架.谢谢.

lan*_*nte 5

想象一下GET这种格式的请求:

request: 'some/url?callback=myFunction'

在某种伪代码中,服务器端的JSONP应该是:

response = '{ "somejson": "someValue" }'

if (request.params.callback != null)
    response = request.params.callback + '(' + response + ')'
Run Code Online (Sandbox Code Playgroud)

因此,检索到客户端的数据将是:myFunction({ "somejson": "someValue" }).

然后就这样从客户端调用它:

script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'some/url?callback=myFunction';
Run Code Online (Sandbox Code Playgroud)

另见这个问题.

更新

您澄清您正在使用Django,所以也许这篇博文可能会对您有所帮助.它解释了如何使用装饰器返回JSONP.您还应该查看有关渲染器的Django文档.