本文的目的是介绍使用Django将JSON数据传递到前端的详细情况,特别关注djangojson的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解使用Django将JS
本文的目的是介绍使用Django将JSON数据传递到前端的详细情况,特别关注django json的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解使用Django将JSON数据传递到前端的机会,同时也不会遗漏关于$.ajax json数据传递方法、AngularJS – 将值从后端传递到前端、AngularJS:在angular-ui-router中使用$ state.go将数据传递到状态、c# – 将JSON数据传递给控制器方法而不必声明对象的知识。
本文目录一览:- 使用Django将JSON数据传递到前端(django json)
- $.ajax json数据传递方法
- AngularJS – 将值从后端传递到前端
- AngularJS:在angular-ui-router中使用$ state.go将数据传递到状态
- c# – 将JSON数据传递给控制器方法而不必声明对象
使用Django将JSON数据传递到前端(django json)
如果通常使用Django框架或Python,是否可以将JSON对象传递到Web模板的前端?
例如,如果我要发送一个具有两个数组作为属性的对象(比方说xvalues
和yvalues
),那么我将如何使用JavaScript或jQuery进行Ajax调用以获得具有该属性的对象?
$.ajax json数据传递方法
前台代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>无标题页</title> <style type="text/css"> .show{ display:block;} .hide{ display:none;} </style> <script type="text/javascript" src="jquery/jquery-1.2.6.js"></script> <script type="text/javascript"> //这个方法把ajax方法封装一下,方便调用。 function myajax(){ //var obj=jsonData(); $.ajax({ type:'post',url:'ajax.aspx',data:jsonData(),//可以直接加一个函数名。 dataType:'json',beforeSend:beforecall,success:callback }); } //封装json数据,为了代码清晰 function jsonData(){ var jsonStr="({"; jsonStr+="\"name\":"; jsonStr+="\"tree\""; jsonStr+=","; jsonStr+="\"id\":"; jsonStr+="\"123\""; jsonStr+="})"; return eval(jsonStr);//关键在于转换。 } //调用前方法,不成功 function beforecall(){ $('#wait').addClass("show").append('调出中...'); //alert('');//测试是否调用 } //回调函数 function callback(data){ $('#response').append(data.name+data.id); $('#wait').css("display","none"); } //onload()事件 $(function(){ $('#confirm').click(myajax); }) </script> </head> <body> <div id="confirm">点击</div> <div id="response">接收后台数据</div> <div id="wait">hello</div> </body> </html>
后台代码:
protected void Page_Load(object sender,EventArgs e) { Hashtable ht = new Hashtable(); string name = Request.Params["name"].ToString(); string birth = Request.Params["birthday"].ToString(); if (!string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(birth)) { //Response.ContentType = "Application/json"; //Response.Write(CreareJson("this is ok!",1,name,birth)); ht.Add("info","成功了"); ht.Add("sta","状态"); ht.Add("name",name); ht.Add("birth",birth); Response.Write(CreateJsonParams(ht)); } Response.End(); } private string CreateJsonParams(Hashtable items) { string returnStr = ""; foreach(DictionaryEntry item in items) { returnStr += "\"" + item.Key.ToString() + "\":\"" + item.Value.ToString() + "\","; } return "{" + returnStr.Substring(0,returnStr.Length-1) + "}"; }
AngularJS – 将值从后端传递到前端
想一个博客文章及其评论,如果我有一个AngularJS服务,通过传递帖子ID到服务检索某个博客帖子的所有评论,Django正在呈现HTML模板,它知道什么是帖子ID,然而我需要传递这个帖子ID到AngularJS和随后的服务。
一个想法是使其在隐藏的<输入>并将此输入分配给模型。不是很吸引人。
另一个是有一个指令,并将此属性中的值传递给此指令,这样我将能够访问此属性的值:
// Django (or any backend) is rendering {{ object.value }} <divdata-object-id={{ object.value }}> ... </div> angular.module('myDirectives',[]). directive('myDirective',function() { return { restrict: 'C',transclude: false,link: function postLink($scope,$element,$attrs) { // $attrs.objectId would have the value } } });
这两种方法看起来很好。但我想知道是否有一个更干净的方式这样做?任何遵循AngularJS最佳实践的方法?
使用它,你可以简单地写:
<div ng-init="myModel=backend-generated-value-here"> ... </div>
说到上面的话,你可能有一些困难的时候找到最佳实践为您的用例,因为AngularJS专注于Web2.0,全客户端Web应用程序。目前,它不能理想地与服务器端生成内容。它可能在未来版本的AngularJS中改变。
AngularJS:在angular-ui-router中使用$ state.go将数据传递到状态
我正在做一个文档编辑器。文档可以是Type A或TypeB。可以通过URL通过文档ID对其进行访问,但是如果文档是A或B类型,则该ID不能使它们清晰可见。
因此,我需要按id加载文档,根据其数据确定其类型,然后将其传递给TypeAController或TypeBController。
现在,使用ui-router,我有类似以下内容:
$stateProvider
.state('loading',{
url: '/{documentId}',template: 'Loading...',controller: function ($stateParams,$state) {
loadDocument($stateParams.documentId)
.then(function (loadedDocument) {
if (loadedDocument.type === 'A') {
$state.go('EditA');
} else if (loadedDocument.type === 'B') {
$state.go('EditB');
}
})
}
})
.state('A',{...})
.state('B',{...})
加载状态将加载文档,确定其类型,然后进入下一个状态。
令人沮丧的是,我找不到真正将加载的文档传递到下一个状态的方法!我可以提供一个可以插入文档的全局服务,也可以只传递文档的ID并在每种状态下再次加载它(希望这次是从缓存中加载),但是这些方法非常笨拙关于角度和角度用户界面的操作是如此顺利。
有什么建议?
c# – 将JSON数据传递给控制器方法而不必声明对象
我正在使用ASP.NET MVC和jQuery通过AJAX调用来保存一些数据.我目前使用jQuery ajax()函数传递一些JSON数据
$.ajax({
dataType: 'json',
type: 'POST',
url: '@Url.Action("UpdateName", "Edit")',
data: {
id: 16,
name: 'Johnny C. Bad'
}
});
使用这个控制器方法和辅助类.
public void UpdateName(Poco poco)
{
var person = PersonController.GetPerson(poco.Id);
person.Name = poco.Name;
PersonController.UpdatePerson(person);
}
public class Poco
{
public int Id { get; set; }
public string Name { get; set; }
}
接受JSON数据的另一种方法是简单地使用这样的多个参数
public void UpdateName(int id, string name)
{
var person = PersonController.GetPerson(id);
person.Name = name;
PersonController.UpdatePerson(person);
}
这种方法适用于较少数量的参数,但我的真实世界代码通常有大约5-10个参数.使用对象而不必声明和使用所有这些参数非常方便.
如果有另一种方法可以将JSON数据作为单个对象接受而不必为每个我希望使用此方法的控制器方法声明一个类,那我就是windernig.例如,像这样:
public void UpdateName(dynamic someData)
{
var person = PersonController.GetPerson(someData.Id);
person.Name = someData.Name;
PersonController.UpdatePerson(person);
}
解决方法:
可能解决方案
创建特定的模型绑定器,例如
public class DynamicModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (controllerContext.HttpContext.Request.Form.AllKeys.Any(x => x == "dynamic"))
{
dynamic model = new ExpandoObject();
IDictionary underlyingmodel = model;
foreach (var key in controllerContext.HttpContext.Request.Form.AllKeys)
underlyingmodel.Add(key, (bindingContext.ValueProvider.GetValue(key).RawValue as string[]).First());
return model;
}
return base.BindModel(controllerContext, bindingContext);
}
}
此绑定器将检查名称为“dynamic”的特定输入,然后创建动态对象
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(dynamic input)
{
ViewBag.Result = input.phrase;
return View();
}
今天的关于使用Django将JSON数据传递到前端和django json的分享已经结束,谢谢您的关注,如果想了解更多关于$.ajax json数据传递方法、AngularJS – 将值从后端传递到前端、AngularJS:在angular-ui-router中使用$ state.go将数据传递到状态、c# – 将JSON数据传递给控制器方法而不必声明对象的相关知识,请在本站进行查询。
本文标签: