以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  ajax 返回值问题  (http://foxtable.net/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方法的返回值。

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

--  作者:有点蓝
--  发布时间: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
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:11.txt



--  作者: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
--  
请做个例子发上来测试