惯例:
我是温浩然:
今天遇到了这样一个问题,首先,我是这样写的
var driver = [];
$("input[rw='driver']",$('#editCardModalprint')).each(function () {
driver.push('{"driver":"'+$(this).val()+'"}');//driver
});
想要生成一个类似
[{"driver":"asdfadsfasdf"},{"driver":"qreqwrqwe"}]
格式的东西,但是发现,如果输入的东西,就是
$(this).val()
中输入的如果有英文格式的引号,如 ' "
前端页面生成
{"driver":""a"c"d"e""}
{"driver":"a'b'c'd'e'f'"}
但是,如果把这个数据,通过
JSONObject jsonParam = new JSONObject();
来转换一下,会出问题的。
问题如下:
"drivers":["{\"driver\":\"\"a\"c\"d\"e\"\"}",{"driver":"a'b'c'd'e'f'"}],
在这个{"driver":""a"c"d"e""}的前面和后面,都被加上一个 " " 引号。
这不是我们需要的。
·······································这是分割线········································
后来发现,原来,我从最开始就错了。
var driver = [];
$("input[rw='driver']",$('#editCardModalprint')).each(function () {
driver.push({
'driver':$(this).val()
});//driver
});
这样就可以了,没必要跟我一样,多写了那么多东西,还不管用了。
<span style="font-family: Arial, Helvetica, sans-serif;">{driver=a'b'c'd'e}</span>
{driver=a"b"c"d"e"}
"drivers":[{"driver":"a'b'c'd'e"},{"driver":"a\"b\"c\"d\"e\""}],
下面贴本来的代码:
先贴JS的:
editPrintCard : function() {
var veidoo = [];
var p = $('#editCardModalprint')
var cs = $("input[ch='veidoo']:checked", p)
cs.each(function() {
veidoo.push('{"name":"'+this.value+'"}');
});
var sample = [];
if($('#editCardModalprint .sample1').val()!=""){
sample.push({
url:$('#editCardModalprint .sample1').val(),
type:'img',
});
}
if($('#editCardModalprint .sample2').val()!=""){
sample.push({
url:$('#editCardModalprint .sample2').val(),
type:'img'
});
}
if($('#editCardModalprint .sample3').val()!=""){
sample.push({
url:$('#editCardModalprint .sample3').val(),
type:'img'
});
}
var reviewstandard = [];
$("input[ru='review']",$('#editCardModalprint')).each(function () {
reviewstandard.push('{"standard":"'+$(this).val()+'"}');
});
var driver = [];
$("input[rw='driver']",$('#editCardModalprint')).each(function () {
driver.push({
'driver':$(this).val()
});//driver
});
var id = $('#editCardModalprint .id').val();
if ("" != id) {
var map = {
cardId : $('#editCardModalprint .id').val(),
stageId : $('#card-main-content .stageId').val(),// 阶段ID
name : $('#editCardModalprint .name').val(),// 名称
description : "",// 描述,保留字段但是不保存
img : $('#editCardModalprint .imgPrint').val(),// 默认图片
type : $('#editCardModalprint .type').val(),// 卡片类型,健康卡,活动卡
taskType : $('#editCardModalprint .taskType').val(),// 任务完成方式
expire : $('#editCardModalprint .expire').val(),// 时效
reviewTime : $('#editCardModalprint .reviewTime').val(),// 评审时长
tipTitle : $('#editCardModalprint .tipTitle').val(),// 小贴士标题
tipDetail : $('#editCardModalprint .tipDetail').val(),// 小贴士具体描述
playTime : '0',// 播放时长
uploadTip : $('#editCardModalprint .uploadTip').val(),// 上传提示
standard : reviewstandard,// 评审标准
drivers : driver,// 操作简介
sample : sample,// 样例教程,
monthAge:$('#editCardModalprint .monthAge').val(),
sort:$('#editCardModalprint .sort').val(),
veidooMsg : veidoo
// 维度信息
}
$.postJson(cp + '/card/edit', map, function(data) {
if (data.code = 'A00000') {
window.location.reload();
}
});
} else {
var map = {
stageId : $('#card-main-content .stageId').val(),// 阶段ID
name : $('#editCardModalprint .name').val(),// 名称
description : "",// 描述,保留字段但是不保存
img : $('#editCardModalprint .imgPrint').val(),// 默认图片
type : $('#editCardModalprint .type').val(),// 卡片类型,健康卡,活动卡
taskType : $('#editCardModalprint .taskType').val(),// 任务完成方式
expire : $('#editCardModalprint .expire').val(),// 时效
reviewTime : $('#editCardModalprint .reviewTime').val(),// 评审时长
tipTitle : $('#editCardModalprint .tipTitle').val(),// 小贴士标题
tipDetail : $('#editCardModalprint .tipDetail').val(),// 小贴士具体描述
playTime : '0',// 播放时长
uploadTip : $('#editCardModalprint .uploadTip').val(),// 上传提示
standard : reviewstandard,// 评审标准
drivers : driver,// 操作简介
sample : sample,// 样例教程,
monthAge:$('#editCardModalprint .monthAge').val(),
sort:$('#editCardModalprint .sort').val(),
veidooMsg : veidoo// 维度信息
}
$.postJson(cp + '/card/create', map, function(data) {
if (data.code = 'A00000') {
window.location.reload();
}
});
}
}
这里:
postJson
是自己封装的AJAX方法,就当作AJAX看就行。 这个是,把页面输入的信息,通过ajax发送到后台,很简单的。
下面是后台代码:
long stageId = Long.parseLong( map.get("stageId").toString());//阶段ID
String name = map.get("name").toString();//名称
String img = map.get("img").toString();//默认图片
String description = map.get("description").toString();//描述
String type = map.get("type").toString();//卡片类型,健康卡,活动卡Long.parseLong( (String) map.get("type"));
String taskType = map.get("taskType").toString();//任务完成方式
String expire = map.get("expire").toString();//时效
long reviewTime = Long.parseLong(map.get("reviewTime").toString());//评审时长
String tipTitle = map.get("tipTitle").toString();//小贴士标题
String tipDetail = map.get("tipDetail").toString();//小贴士具体描述
long playTime = Long.parseLong( map.get("playTime").toString());//阶段ID
String uploadTip = map.get("uploadTip").toString();//上传提示
List standard = (ArrayList) map.get("standard");//评审标准
List drivers = (ArrayList) map.get("drivers");//操作简介
List sample = (ArrayList) map.get("sample");//样例教程,
List veidooMsg = (ArrayList) map.get("veidooMsg"); //维度信息
String monthAge = map.get("monthAge").toString();//小贴士具体描述
long sort = Long.parseLong( map.get("sort").toString());//阶段ID
for (int i = 0; i < drivers.size(); i++) {
System.out.println( drivers.get(i));
}
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost method = new HttpPost(urlConfig.getApiUrl()+"/baby-server/card/create");
JSONObject jsonParam = new JSONObject();
jsonParam.put("stageId", stageId);
jsonParam.put("name", name);
jsonParam.put("description", description);
jsonParam.put("img", img);
jsonParam.put("monthAge", monthAge);
jsonParam.put("sort", sort);
jsonParam.put("type", type);
jsonParam.put("taskType", taskType);
jsonParam.put("expire", expire);
jsonParam.put("reviewTime", reviewTime);
jsonParam.put("tipTitle", tipTitle);
jsonParam.put("tipDetail", tipDetail);
jsonParam.put("playTime", playTime);
jsonParam.put("uploadTip", uploadTip);
jsonParam.put("standard", standard);
jsonParam.put("drivers", drivers);
jsonParam.put("sample", sample);
jsonParam.put("veidooMsg", veidooMsg);
System.out.println("card create 中jsonParam是:"+jsonParam);
StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
method.setEntity(entity);
HttpResponse resGet;
JSONObject resJSON = new JSONObject();
这个就是从前台页面获取的数据,打包成JSON,然后发送到开放的端口进行处理了。