Foxtable(狐表)用户栏目专家坐堂 → ajax 返回值问题


  共有2361人关注过本帖树形打印复制链接

主题:ajax 返回值问题

帅哥哟,离线,有人找我吗?
qq252476275
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
ajax 返回值问题  发帖心情 Post By:2021/9/28 15:14:00 [只看该作者]

使用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方法的返回值。

服务器端的代码没有修改。
图片点击可在新窗口打开查看此主题相关图片如下:1632813098(1).jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/9/28 16:16:00 [只看该作者]

服务端代码?

 回到顶部
帅哥哟,离线,有人找我吗?
qq252476275
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/9/28 16:35:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:11.txt



 回到顶部
帅哥哟,离线,有人找我吗?
qq252476275
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/9/28 16:37:00 [只看该作者]

服务器端执行没有问题, 数据库也更新了

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/9/28 17:06:00 [只看该作者]

output.show( CompressJson(obj))使用post测试的时候服务端显示什么数据?

前端console.log(res);显示什么内容?

 回到顶部
帅哥哟,离线,有人找我吗?
qq252476275
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:196 积分:1429 威望:0 精华:0 注册:2020/5/23 14:56:00
  发帖心情 Post By:2021/9/29 9:08:00 [只看该作者]

服务器端 outputshow post 跟get方法内容是一样的。

post方法,前端打印只有  code:200, msg : ok

get方法 , 前段打印就是1楼的图片内容。

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/9/29 9:13:00 [只看该作者]

请做个例子发上来测试

 回到顶部