AJAX 调用的内容是否已添加到 Django 上下文变量
我正在使用 JQuery 加载函数来加载页面的一部分。我可以在加载该页面的页面中访问该页面的变量吗?例如
页面 A 使用 JQuery 加载函数加载 B
页面 B 在上下文中加载并设置一个名为 pageB_var 的变量,该变量保存一个 django 对象
页面 A 可以通过执行 {{pageB_var}} 来访问此变量,因为它已添加到上下文中
如果不是,最好的方法是什么?
谢谢
I am using the JQuery load function to load part of my page. Can I access the variables from that page in the page that loads it. e.g.
Page A uses JQuery load function to load B
Page B loads and sets a variable in context called pageB_var which holds a django object
Page A can then access this variable by doing {{pageB_var}} since it was added to the context
If not what is the best way of doing this?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
听起来您正在使用异步请求来更新页面的一部分,接收部分 HTML 响应并用此响应替换页面的部分标记。
您发现这显然限制了您更新该部分页面中包含的信息。
请考虑为异步请求提供 JSON 响应,其中包含您需要的所有信息,然后通过使用 JavaScript 操作 DOM 客户端来更新页面任何部分中必要的 HTML。将 JSON 视为您用于此目的的上下文。
It sounds like you're using an asynchronous request to update part of a page, receiving a partial HTML response and replacing part of the markup of your page with this response.
You've found that this obviously limits you to updating information contained within that partial page.
Consider instead providing a JSON response to your asynchronous request, containing all the information you need, and then updating the necessary HTML in any part of the page by manipulating the DOM client-side, with JavaScript. Think of the JSON as being your context for this purpose.
一旦页面 A 被发送到浏览器,它就基本上固定在内存中。您必须使用 JavaScript 中的 DOM 函数才能修改它显示的内容。话虽如此,您可以从视图返回 JSON 以调用页面 B,然后对其进行解码并将其插入到页面 A 中。
Once page A is sent to the browser it's mostly fixed in memory. You'd have to use the DOM functions in JavaScript in order to modify what it shows. Having said that, you could return JSON from the view for the call to page B and then decode it and insert it into page A.
不会。当您收到 B 的响应时,页面 B 的呈现上下文已无关且无法访问。
发生的情况如下:
页面A在服务器中呈现。在此期间,它的上下文存在。当服务器完成渲染后,它将渲染的页面发送到客户端。然后客户端Web浏览器运行包含jquery load()的javascript,再次调用服务器并告诉它渲染B。此时渲染页面A的进程不再存在,因此页面B将内容发送到页面A 的渲染你将不得不进行时间旅行......
执行此操作的方法是让页面 B 返回一个 JSON 对象,然后使用为 load() 提供的(javascript)回调函数来渲染基于页面的更改来自 B 的 JSON 响应。
No. Page B's rendering context is irrelevant and unreachable by the time you get B's response.
Here's what happens:
Page A is rendered in the server. during this time, its context exists. when the server is done rendering it, it sends the rendered page to the client. the client web browser then runs the javascript including your jquery load() to call the server again and tell it to render B. at this point the process that rendered page A doesn't exist anymore, so for page B to send stuff to page A's rendering you would have to make time travel....
The way to do this, is for page B to return a JSON object, and then use the (javascript) callback function given to load() to render changes to the page based on this JSON response from B.