以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- ajax 返回值问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=172185) |
-- 作者:qq252476275 -- 发布时间:2021/9/28 15:14:00 -- ajax 返回值问题 使用ajax请求服务器更新 以下内容为程序代码: 1 admin.ajax({ 2 url : \'trans\', 3 data : { 4 dataSource : updateData.dataSource, 5 tablename : JSON.stringify(updateData.tablename), 6 reqType : JSON.stringify(updateData.reqType), 7 logicDelete : JSON.stringify(updateData.logicDelete), 8 content : updateData.content, 9 fieldType : JSON.stringify(updateData.fieldType), 10 tj : JSON.stringify(updateData.tj), 11 }, 12 //type : \'POST\', 13 //dataType: \'josn\', 14 success : function(res){ 15 admin.removeLoading(); 16 console.log(res); 17 18 if(res.code == 0 ){ 19 20 table.reload(\'tableUserUpdate\', { 21 where: $.extend({tj: tj},objPre), 22 page:{ 23 curr : nCurrPage, 24 limit : nPageSize, 25 }, 26 }); 27 return false; 28 } 29 } 30 }); 不使用 post方法, 可以获得res如下(见图片): 而使用post方法: 以下内容为程序代码: 1 admin.ajax({ 2 url : \'trans\', 3 data : { 4 dataSource : updateData.dataSource, 5 tablename : JSON.stringify(updateData.tablename), 6 reqType : JSON.stringify(updateData.reqType), 7 logicDelete : JSON.stringify(updateData.logicDelete), 8 content : updateData.content, 9 fieldType : JSON.stringify(updateData.fieldType), 10 tj : JSON.stringify(updateData.tj), 11 }, 12 type : \'POST\', 13 dataType: \'josn\', 14 success : function(res){ 15 admin.removeLoading(); 16 console.log(res); 17 18 if(res.code == 0 ){ 19 20 table.reload(\'tableUserUpdate\', { 21 where: $.extend({tj: tj},objPre), 22 page:{ 23 curr : nCurrPage, 24 limit : nPageSize, 25 }, 26 }); 27 return false; 28 } 29 } 30 }); success 回调后,只能得到 : code : 200, msg : ok 请问是什么原因? 应该如何用post后才能获得get方法的返回值。 |
-- 作者:有点蓝 -- 发布时间:2021/9/28 16:16:00 -- 服务端代码? |
-- 作者:qq252476275 -- 发布时间:2021/9/28 16:34:00 -- \' \' 开始事务回滚 \' 准备不同的SQL语句 \' 执行SQL \' 提交事务 \' 出错则回滚 \' 客户端传递的是JSON对象,则服务器端使用e.PlainText接收 \' 且客户端ajax传递时必须有method:\'post\' 及 contentType: \'application/json\' 配置 \' var dataLs = \' { \' dataSource : \'foxData\' , \' 数据源 \' tablename : [\'tb1\',\'tb2\',\'tb3\'], \' 操作的表名 \' content : [{字段1:值1,字段2:值2,字段3:值3},{字段1:值1,字段2:值2},{字段1:值1,字段2:值2}] \'增加,更新的内容 \' fieldType : [{字段1:\'expression\',字段2:\'expression\'},{字段3:\'expression\'}], \' 新增/更新内容的类型是否为表达式 (与字符串的区别,在拼接sql时字符串有单引号,表达式无单引号) \' 名必须包含在content的名中, 可以不全部写 \' logicDelete: [0,0,1] \' 是否逻辑删除 \' reqType : [\'append\',\'update\',\'delete\'] \' 操作方式 \' tj : [\'可用 = 0\', \'ID IN (1,2,3)\',\'\'] \' 筛选条件 \' } \' 客户端准备的数据必须是字典字符串,不能是各种字典,数组的组合, 此方法传递过来,则服务器使用e.Values(key)来处理 \'var dataLs = { \'
dataSource : ajaxData.dataSource, \'
tablename : JSON.stringify(ajaxData.tablename), \'
reqType : JSON.stringify(ajaxData.reqType), \'
logicDelete: JSON.stringify(ajaxData.logicDelete), \'
content : JSON.stringify(ajaxData.content), \' fieldType : JSON.stringify(ajaxData.fieldType), \'
tj : JSON.stringify(ajaxData.tj), \'
}; Dim e As RequestEventArgs = Args(0) \' 获取e参数中的所有值 Dim strE As String Dim eValue As new jarray Dim eObj As new Jobject eValue.Add(eObj) eObj("e参数:") = "e" eObj("Host") = e.Host eObj("Port") = e.Port eObj("Path") = e.Path Dim nRecord As Integer = 0 \' 记录错误发生在第几行. \' 读取各字典内容 Dim arr As New JArray \'Dim eeObj As JObject = JObject.Parse(strJSON) Dim strDBS As String \' 数据源 If (e.Values.ContainsKey("dataSource") ) Then strDBS = e.Values("dataSource") End If Dim strReqType As String \'表操作方式 Dim arrReqType As JArray If (e.Values.ContainsKey("reqType") ) Then strReqType = e.Values("reqType") arrReqType = JArray.Parse(strReqType) arr.add(arrReqType) End If Dim strTableName As String \'操作表名称 Dim arrTableName As JArray If e.Values.ContainsKey("tablename") Then strTableName = e.Values("tablename") arrTableName = JArray.Parse(strTableName ) arr.add(arrTableName) End If Dim strLogic As String \'是否逻辑删除 Dim arrLogic As JArray If e.Values.ContainsKey("logicDelete") Then strLogic = e.Values("logicDelete") arrLogic = JArray.Parse(strLogic) arr.add(arrLogic) End If Dim strContent As String \'append,update的内容 Dim arrContent As JArray If e.Values.ContainsKey("content") Then strContent = e.Values("content") arrContent = JArray.Parse(strContent) arr.add(arrContent) End If Dim strTJ As String \'update ,delete的条件 Dim arrTJ As JArray If e.Values.ContainsKey("tj") Then strTJ = e.Values("tj") arrTJ = JArray.Parse(strTJ) arr.add(arrTJ) End If Dim strFieldType As String \' update ,append 的 字段值是否表达式 Dim arrFieldType As JArray If e.Values.ContainsKey("fieldType") Then strFieldType = e.Values("fieldType") arrFieldType = JArray.Parse(strFieldType) arr.add(arrFieldType) End If eObj("Values") = arr |
-- 作者:qq252476275 -- 发布时间:2021/9/28 16:34:00 -- \' 数组对象遍历 \'For Each jt1 As jToken In arr \' For Each jt2 As jToken In jt1 \' output.show(jt2.ToString()) \' Next \'Next \' 集合对象遍历 \'For Each jo As jToken In arrContent \' For Each jp As jProperty In jo \' Output.Show(jp.name.ToString() & " : " & jp.value.ToString() ) \' Next \'Next \' 判断各字典的数组对象的长度是否一致 Dim obj As new jobject obj("code") = "0" If strTableName = "" Then obj("code") = "401" obj("tableDescription") = "缺少tablename数组" End If If arrTableName.Count = 0 Then obj("code") = "401" obj("tableDescription") = "tablename数组不可为空" End If If strReqType = "" Then obj("code") = "401" obj("reqTypeDescription") = "缺少reqTYpe值" End If If arrReqType.Count <> arrTableName.Count Then obj("code") = "401" obj("reqTypeDescription") = "reqType与tablename数组的个数不一致" End If If strContent <> "" Then If arrTableName.Count <> arrContent.Count Then obj("code") = "401" obj("contentDescription") = "content与tablename数组的个数不一致" End If End If If strFieldType <> "" Then If arrFieldType.Count <> arrContent.Count Then obj("code") = "401" obj("contentDescription") = "content与fieldType数组的个数不一致" End If End If \'Output.Show( arrFieldType.count) If strLogic <> "" Then If arrTableName.Count <> arrLogic.Count Then obj("code") = "401" obj("logicDeleteDescription") = "logicDelete与tablename数组的个数不一致" End If End If If strTJ <> "" Then If arrTableName.Count <> arrTj.Count Then obj("code") = "401" obj("tjDescription") = "tj与tablename数组的个数不一致" End If End If If strDBS = "" Then strDBS = "foxData" ElseIf strDBS = "dd" Then obj("code") = "401" obj("tjDescription") = "当前函数不对ACCESS数据库起效!" End If \'Functions.Execute("showDebugInfo", "调用函数:trans" , "执行SQL语句:test")
|
-- 作者:qq252476275 -- 发布时间:2021/9/28 16:35:00 -- |
-- 作者:qq252476275 -- 发布时间:2021/9/28 16:37:00 -- 服务器端执行没有问题, 数据库也更新了 |
-- 作者:有点蓝 -- 发布时间:2021/9/28 17:06:00 -- output.show( CompressJson(obj))使用post测试的时候服务端显示什么数据? 前端console.log(res);显示什么内容?
|
-- 作者:qq252476275 -- 发布时间:2021/9/29 9:08:00 -- 服务器端 outputshow post 跟get方法内容是一样的。 post方法,前端打印只有 code:200, msg : ok get方法 , 前段打印就是1楼的图片内容。
|
-- 作者:有点蓝 -- 发布时间:2021/9/29 9:13:00 -- 请做个例子发上来测试 |