js与mvc 数据的交互

在做考试系统中,遇到最头疼的问题,就是前台与后台的交互。对于使用easyui来说,刚接触不久,有点陌生。

查着文档,看着Demo。做起来着实有点头疼。

首先,前台使用的是MVC+Easyui,后台使用的WCF提供服务。那么前台的数据,是如何与后台进行交互的呢?

页面上的所有事件都是通过js来调用的。那么就必须是
js里面写事件,然后把前台的数据,传到Controller里面,然后利用Controller去调用后台提供的WCF服务。

JS向后台提交数据方法:

利用js向后台提供数据。无非两种方法,一种Get传值,一种POST传值。

使用GET传值,传递的数据需要一个个的去写,而且传递的值都写在url上了。除非进行加密,否则这种传值方式安全性很难保证。

使用POST传值,传递的内容比较安全。而且也可以提交整个表单。这样后台可以根据表单,来获取自己需要的内容。简单的来说就是,把前台的一堆数据都提交给后台,后台挑着用。

POST向后台传值,也可以传递一个JSON串给后台使用。

在页面的事件中,不需要刷新页面,所以需要使用ajax来进行数据的交互。以下代码,引用的是jquery.easyui.min.js

里面的方法,已经被封装好了。直接用就可以了

<script src="../../Content/jquery-easyui-1.3.2/jquery.easyui.min.js"></script>

POST向后台传递JSON串:

//模糊查询 利用ajax提交JSOn数据
function doSearch(value) {
    var flag=(value != "");
    if (flag) {
        var grid = $('#dg');
        var options = grid.datagrid('getPager').data("pagination").options;
        var curr = options.pageNumber;
        var pageSize = options.pageSize;
        $.ajax({
            type: "POST", //提交数据的类型 分为POST和GET
            async: false,
            url: "/QuestionType/FuzzyQueryQuestionType",  //提交url 注意url必须小写
            data: { "SearchContent": value, "pageSize": pageSize, "pageIndex": curr },
            success: function (data) {
                var jsondata = eval(data);
                //var jsData = (new Function("", "return " + data))();
                $('#dg').datagrid('loadData', data);
            }
        });
        return;
    }
    //如果查询框里面没有内容  则重新加载表格
    $('#dg').datagrid("load", "/QuestionType/QueryQuestionTypeData");

}

提交数据的时候:url里面写  /控制器名称/Action方法名。

POST向后台提交表单:

//进行查询
function doSearch(value) {
    var flag=(value != "");
    if (flag) {
        //提交查询表单
    	$('#searchContent').form({
        	url: "/QuestionType/FuzzyQueryQuestionType",
        	onSubmit: function () {
            	//进行表单验证
            	//如果返回false阻止提交
        	},
        	success: function (data) {
            	//var jsondata = JSON.parse(data); //必须转换成json对象,否则异常! rows is undefined
            	var jsondata = eval(data);
       	     	$('#dg').datagrid("loadData", jsondata);
         	//$('#dg').datagrid("reload");
        	}
    	});
    	//提交表单
    	$('#searchContent').submit();
    }
    //如果查询框里面没有内容  则重新加载表格
    $('#dg').datagrid("load", "/QuestionType/QueryQuestionTypeData");
}

表单内容:

<form id="searchContent" method="post">
    @*  1、 加载搜索框*@
    @{Html.RenderPartial("../../Views/ControlsPartial/SearchboxPartial");}
    @*速度慢不用@Html.Partial("../../Views/ControlsPartial/SearchboxPartial")*@

    <div id="ContentAreas" />
</form>

Controller接受数据:

public ActionResult FuzzyQueryQuestionType()
        {
            int pageSize = int.Parse(Request.Form["pageSize"]); //10;// int.Parse(Request.Params["rows"].ToString());
            //第几页
            int pageIndex = int.Parse(Request.Form["pageIndex"]); //1;// int.Parse(Request.Params["page"].ToString());
            int total = 0;

            //1、具体操作-调用后台方法,接收从后台传过来的--赋值
            string strLike = Request.Form["SearchContent"];
            //2、调用后台 查询题型的服务
            List<ExamQuestionTypeEntity> listData = questionTypeService.FuzzyQueryQuestionType(strLike,pageSize,pageIndex,out total);

            var data = new
            {
                total,
                rows = listData
            };
            return Json(data, JsonRequestBehavior.AllowGet);

        }

后台返回类型为JSON串,前台需要根据返回值 在刷新自己的表格。

所以用到了loadData 和load方法。

前台在利用后台传回的json串的时候,有可能出现以下错。

easyui里面的gridview控件。

刷新数据,有两种方式。

第一种方法 : $(‘#dg‘).datagrid("load", "/QuestionType/QueryQuestionTypeData");

第二个参数为url,所以这个刷新
需要重新去后台查询。

第二种方法:$(‘#dg‘).datagrid("loadData",
jsonData);

第二个参数,是后台传回来的JSON串,可以直接利用该数据
绑定到表格。

这里需要注意一点,gridview重新加载数据的时候,使用的JSON数据格式的数据,而不是JSON格式的字符串。

前台和后台跑通一条线,就容易多了。

时间: 2024-12-13 10:18:51

js与mvc 数据的交互的相关文章

MVC客户端使用 Mustache.js把json数据填充到模版中

使用Mustache的好处是:可以把一些反复用到的html部分定义成Mustache模版,以便多次使用.使用Mustache的大致步骤是: →从后台拿到json数据 →获取前台页面预先定义好Mustache模版(占位符必须和从后台传来的的字段或属性名一致) →遍历每行的json数据,使用Mustache.render(template, row)方法把json数据填充到对应的占位符,得到html内容 →把html内容追加到页面的某个位置 显示一个足球俱乐部的下拉框: 当点击下拉框,显示该俱乐部的

MVC 数据验证【转】

[转自]http://www.cnblogs.com/dozer/archive/2010/04/12/MVC-DataAnnotations.html 作者Dozer 今天在这里给大家介绍一下MVC的数据验证框架. 在1.0版中,很多朋友提出了怎么使用客户端验证,今天找了一些资料,发现了客户端验证的方法. 1.MVC中的数据验证框架有何优点? 在Asp.net时代,或者没有使用MVC的验证框架,一般是在BLL层中进行数据验证,但是BLL层的返回值又只能返回一个东西,比如一个字符串,而实际情况中

MVC 数据验证

前一篇说了MVC数据验证的例子,这次来详细说说各种各样的验证注解.System.ComponentModel.DataAnnotations 一.基础特性 一.Required 必填选项,当提交的表单缺少该值就引发验证错误. 二.StringLength 指定允许的长度 指定最大长度: [StringLength(20)] //最大长度不超过20个字符 指定最短于最长限制: [StringLength(20,MinimumLength=3)] //最大长度不超过20个字符,最短不能低于3个字符

MVC数据校验

MVC数据校验 1.前端: 方案一: js校验,非本章重点:就不提了. 方案二: jquery.validate.js 重点 实例: 2.后端: 方案一: 特性法 实例: 方案二: ModelState 实例:

node.js express mvc轻量级框架实践

本文记录的是笔者最近抽私下时间给朋友做的一个时时彩自动下注系统,比较简单,主要也是为了学习一下node.js. 其实逻辑没什么可以深谈的,主要是想说说这套代码结构.结构如下图: js的代码比较难以维护,不清楚大家对于这点是否认同,但这里笔者只说自己的感受,笔者的朋友一开始找到笔者,说玩时时彩,一直盯着玩,会因为贪心会乱来,想做个自动下注系统, 让程序自己玩.一开始,笔者也只想敷衍了事,直接拿node.js+express整了下面这套结构. 基本和express 示例代码没啥两样.但是随着需求的变

简析Spring MVC 数据解析

简析Spring MVC 数据解析 特别说明:本文使用spring 版本为 4.1.3 常用数据提交方式: 1. form 表单提交数据 1.1 解析form表单数据(无图片等数据) 前端代码事例: <form action="test/entity" method="post"> 用户ID:<input type="text" name="userid"/><br> 用户名:<inp

JS解析json数据并将json字符串转化为数组的实现方法

json数据在ajax实现异步交互时起到了很重要的作用,他可以返回请求的数据,然后利用客户端的js进行解析,这一点体现出js的强大,本文介绍JS解析json数据并将json字符串转化为数组的实现方法,需要了解的朋友可以参考下 复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document

asp.net 使用JS获得串口数据

使用JS获得串口数据 JavaScript语言通常是一种网页编程语言,比较适合前台的一些应用设计.对于本地设备和数据的操作有比较大的限制.由于项目的需要,我需要获得本机的串口数据并显示在web端.我们有很多中方法实现功能,在实际的操作过程中我测试两种方式获得数据.第一种方法是使用ActiveX控件,JS调用MSCOMM32.dll的串口控件对串口进行控制.第二种方法是使用C#语言的控件对串口进行控制,然后使用JS+AJAX与C#进行交互获得串口数据. 先说说两种方法各自的特点:方法一使用的是微软

转载:js和as间的交互

转载一: 提及AS3与外部脚本的交互,笔者认为可以总结成两种.一是AS3调用外部函数,二是外部脚本调用AS3函数.无外乎就 这两种.在调用函数的同时,我们还可以向函数传递一些参数.这就达到了传递数据的目的.举一个最简单的例子.我们平时在网络上看视频的时候,这些用AS3 制作的播放器就是由外部脚本(可能是JS,也可能是ASP或其他脚本)传递给它的视频地址.从而就简化我们的后台程序.有的人会问!你用播放器去读取外部 的XML数据不是也可以吗?确实,当时,当你有成千上万个视频的时候,你不可能输入这么多