*转载请注明出处:

作者:willingtolove;

本文链接:http://www.cnblogs.com/willingtolove/p/4741549.html

正文:

1. 方法一:利用ajax

  1) 客户端js代码:

 //获取对象数组
function GetQAS() {
var stuAnswerList = [];
var stuAnswer = { 'answerID': 1, 'answerType': 1, 'answerContent': 'one', 'answerSingle': 1, 'answerMultiple': '1,2', 'answerTOF': true };
var stuAnswer1 = { 'answerID': 1, 'answerType': 1, 'answerContent': 'two', 'answerSingle': 1, 'answerMultiple': '1,2', 'answerTOF': true }; stuAnswerList.push(stuAnswer);
stuAnswerList.push(stuAnswer);
    return stuAnswerList;
}
//ajax提交数据
function SubmitStuAnswersAjax(stuAnswerArr) { $.ajax({
url: "../../Paper/SubmitStuAnswers",
type: "post",
data: { stuAnswerArr: stuAnswerArr },
async: false,
cache: false,
error: function (XMLHttpRequest, textStatus, errorThrown) {
if (XMLHttpRequest.status == 1001) {
eval(XMLHttpRequest.ResponseText);
} else {
alert("GetPaper error");
}
},
success: function (data) {
alert(data);
}
});
}
//按钮点击方法
function SubmitStuAnswersBtn() {
var stuAnswerArr = GetQAS();
SubmitStuAnswersAjax(stuAnswerArr);
}

  2) 服务端C#代码:

//stuAnswerEntity
public class stuAnswerEntity
{
public int answerID { set; get; }
public int answerType { set; get; }
public int answerSingle { set; get; }
public string answerMultiple { set; get; }
public bool answerTOF { set; get; }
public string answerContent { set; get; }
} //stuAnswerArr 注意前后台变量名称一定要相同
public ActionResult SubmitStuAnswers(List<stuAnswerEntity> stuAnswerArr)
{
bool re = false;
List<stuAnswerEntity> stuAnswerEntityList = new List<stuAnswerEntity>();
stuAnswerEntityList = stuAnswerArr;
//此时stuAnswerArr中就存有前台stuAnswerArr中的数据;
return Content(re.ToString());
}

2. 方法二:js模拟form 进行post提交

  

  1) 客户端js代码:

 function REV_SubmitStuAnswersBtn() {
var stuAnswerArr=JSON.stringify(GetQAS());//转成json字符串
//JS模拟post提交
var REVQForm = document.createElement("form");
REVQForm.setAttribute("method", 'POST');
REVQForm.setAttribute("action", '../Paper/GetREVPaper');
REVQForm.innerHTML = "";
var stuAnswerInput = document.createElement("input");
stuAnswerInput.setAttribute("type", "hidden");
stuAnswerInput.setAttribute("name", 'REVQ');//'REVQ'
stuAnswerInput.setAttribute("value", stuAnswerArr);
REVQForm.appendChild(stuAnswerInput); document.body.appendChild(REVQForm);
REVQForm.submit();
}

  

2) 服务端C#代码:以json字符串的方式传输

public ActionResult GetREVPaper()
{
bool re = false;
string stuAnswerJson = Request["REVQ"] == null ? "" : Request["REVQ"];//'REVQ'
//将json字符串反序列化
List<stuAnswerEntity> studentAnswerList = JsonConvert.DeserializeObject<List<stuAnswerEntity>>(stuAnswerJson); return Content(re.ToString());
}


作者: willingtolove
本文链接: js 提交对象数组到服务端的方法总结
欢迎经常来转转,转载请注明出处!

JS提交对象数组到服务端的方法总结(C#实例)的更多相关文章

  1. node.js中ws模块创建服务端和客户端,网页WebSocket客户端

    首先下载websocket模块,命令行输入 npm install ws 1.node.js中ws模块创建服务端 // 加载node上websocket模块 ws; var ws = require( ...

  2. Vue.js与 ASP.NET Core 服务端渲染功能整合

    http://mgyongyosi.com/2016/Vuejs-server-side-rendering-with-aspnet-core/ 原作者:Mihály Gyöngyösi 译者:oop ...

  3. js插件---WebUploader 如何接收服务端返回的数据

    js插件---WebUploader 如何接收服务端返回的数据 一.总结 一句话总结: uploadSuccess有两个参数,一个是file(上传的文件信息),一个是response(服务器返回的信息 ...

  4. (8)Linux(客户端)和Windows(服务端)下socket通信实例

    Linux(客户端)和Windows(服务端)下socket通信实例: (1)首先是Windows做客户端,Linux做服务端的程序 Windows   Client端 #include <st ...

  5. js页面(页面上无服务端控件,且页面不刷新)实现请求一般处理程序下载文件方法

    对于js页面来说,未使用服务端控件,点击下载按钮时不会触发服务端事件,且不会提交数据到服务端页面后台进行数据处理,所以要下载文件比较困难.且使用jQ的post来请求一般处理程序也不能实现文件的下载,根 ...

  6. supermap iclient for js 标签专题图(服务端)

    <!DOCTYPE><html> <head> <meta http-equiv="Content-Type" content=" ...

  7. node.js中net网络模块TCP服务端与客户端的使用

    node.js中net模块为我们提供了TCP服务器和客户端通信的各种接口. 一.创建服务器并监听端口 const net = require('net'); //创建一个tcp服务 //参数一表示创建 ...

  8. nuxt.js部署vue应用到服务端过程

    由于seo的需要,最近将项目移植道nuxt.js下采用ssr渲染 移植完成后,一路顺畅,但是到了要部署到服务器端上时候,还是个头疼的问题,但最终还是顺利完成.现在记录一下部署中的过程. 注:部署时候过 ...

  9. 三种客户端访问wcf服务端的方法 C#

    原文 http://blog.csdn.net/zlj002/article/details/7914556 string jsonstr = String.Empty; string url = & ...

随机推荐

  1. 动态调用WebService

    WebService内容 using Microsoft.CSharp;using System;using System.CodeDom;using System.CodeDom.Compiler; ...

  2. hdu2588 GCD (欧拉函数)

    GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数.  (文末有题) 知 ...

  3. fopen函数和fread函数、fwrite函数

    fopen(打开文件) 相关函数 open,fclose 表头文件 #include<stdio.h> 定义函数 FILE * fopen(const char * path,const ...

  4. [No0000AB]用Visual Studio 2015在 WIN10 64bit 上编译7-zip (32 bit)

    1.7-ZIP简介 7-zip 是一款免费的压缩解压软件.ZIP格式的文件默认被苹果和微软支持,完全不需要额外安装其他软件就可以解压.但对于非US-ASCII编码的文件名和大于2GB的ZIP文件,可能 ...

  5. SQL操作符

    Oracle中的操作符算术操作符:无论是在sqlserver,或者是java中,每种语言它都有算术操作符,大同小异. Oracle中算术操作符(+)(-)(*)(/) 值得注意的是:/ 在oracle ...

  6. rxjs5.X系列 —— transform系列 api 笔记

    欢迎指导与讨论:) 前言 本文是笔者翻译 RxJS 5.X 官网各类operation操作系列的的第一篇 -- transform转换.如有错漏,希望大家指出提醒O(∩_∩)O.更详细的资料尽在rxj ...

  7. [LeetCode] Sum of Two Integers 两数之和

    Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -. Exam ...

  8. [LeetCode] Strobogrammatic Number II 对称数之二

    A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside ...

  9. 用vue.js学习es6(六):Iterator和for...of循环

    一.Iterator (遍历器)的概念: 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只 要部署Iterator接口,就可以完成遍历操 ...

  10. vector迭代器用法

    #include<iostream> #include<vector> using namespace std; int main() { vector<int> ...