当前位置: 首页 > 面试题库 >

在控制器中呈现JSON

冀弘厚
2023-03-14
问题内容

我正在阅读一本书,并在有关控制器的一章中谈到渲染的内容,对于JSON,它有一个类似这样的示例,但没有详细介绍,因此我无法弄清楚该示例所适合的整体情况:

render :json => @projects, :include => tasks

还有使用JSONP和回调函数的示例:

render :json => @record, :callback => 'updateRecordDisplay'

有人可以解释这些吗?


问题答案:

通常,您将返回JSON的原因之一是:

A)您正在将部分/全部应用程序构建为单页应用程序(SPA),并且需要客户端JavaScript能够提取其他数据而无需完全重新加载页面。

要么

B)您正在构建供第三方使用的API,并且您已决定使用JSON序列化数据。

或者,也许,你是吃自己的狗食和做 两个

在这两种情况下,render :json => some_data都将对提供的数据进行JSON验证。:callback第二个示例中的键需要更多说明(请参阅下文),但这是同一想法的另一种变体(以JavaScript可以轻松处理的方式返回数据)。

为什么:callback

JSONP(第二个示例)是一种绕过相同起源策略的方法,该策略是每个浏览器内置安全性的一部分。如果你有你的API
api.yoursite.com,您将服务应用程序关闭的services.yoursite.com您的JavaScript不会(默认情况下)能够使XMLHttpRequest(XHR
-又名AJAX)从请求servicesapi。人们绕过该限制的方式(在跨域资源共享规范最终确定之前)是通过从服务器发送JSON数据, 就好像它是JavaScript而不是JSON一样
。因此,与其发回:


{"name": "John", "age": 45}

服务器将发送回:

valueOfCallbackHere({"name": "John", "age": 45})

因此,客户端JS应用程序可以创建一个script指向的标签,api.yoursite.com/your/endpoint?name=John并具有该valueOfCallbackHere功能(必须在客户端JS中定义),
并使用其他来源的数据进行 调用。)



 类似资料:
  • 问题内容: 如何在控制器的JsonResult中渲染要使用的局部视图? 问题答案: 是一种自定义扩展方法,将视图呈现为。 文章中没有提到它(您最初提到的是什么),但是您可以在文章附带的示例代码中找到它。可以在\ Helpers \ Reders.cs下找到它 这是有问题的方法的代码:

  • 问题内容: 因此,我有一个带有按钮的根视图控制器,当用户按下该按钮时,将显示另一个视图控制器。第二个控制器具有一个关闭选项,该选项仅返回到根视图控制器,还有一个按钮,当用户触摸它时,该按钮将关闭当前视图控制器,以便它再次返回到根视图控制器并显示另一个按钮。转到我使用的第一个控制器: 在另一个视图控制器中,我选择仅关闭的按钮,然后执行此操作。 因此,对于需要解雇并显示另一个控制器的第二个控制器,我尝

  • 我的应用程序支持英语和阿拉伯语。我正在使用UIView。外观()。semanticContentAttribute属性在RTL到LTR之间更改,反之亦然,如下所示。 我正在使用self.present呈现日历事件EKEventEditViewController()(eventController,动画:true,完成:nil)。我想总是LTR显示这个屏幕。 我尝试了以下代码,但当我将语言更改为阿

  • 问题内容: 我正在使用此应用程序,我需要所有视图控制器,但一个需要纵向显示。我特别需要一个单一的视图控制器,使其能够旋转至手机所处的方向。 为此,我以模态形式呈现(未嵌入NavigationController中) 所以(例如)我的结构是这样的: 窗口-肖像 根视图控制器(UINavigationController-肖像) 家庭视图控制器(UIViewController-肖像) 详细信息视图控

  • 在ExtensionBuilder的帮助下,我为TYPO3(7.6.15)创建了一个简单的后端模块。和具有、和。只有,它是模块的主视图,应该如下所示: 现在,我想从,如果可能的话,我希望在视图的模板()中执行此操作。 我感谢所有的帮助,并预祝大家有一个美好的一天!