我有一些通过Ajax调用不断更改的Session值.我似乎无法获得POST数据的句柄来处理它并设置值.

我要传递给它的是一个字符串数组,如下面的代码所示.

这是AJAX调用的位置:

var sessionValues = [];

str = {"PID": "1", "Level": "Main", "MenuName": "Kitchen", "State": "CHECKED"}

sessionValues.push(str);

var postObj = {"sessionData": sessionValues};

$.ajax({

type: 'POST',

data: {'data': postObj},

url: 'setSession.asp'

}).done(function(response){

console.log(response);

})

我在程序的PHP版本中可以正常工作,但是我的ASP版本无法获取数据.这是我的PHP版本和ASP版本所能转换的最好的版本.

$data = $_POST['data'];

foreach ($data['sessionData'] as $key => $value) {

$projectProduct = "1";

$level = $value["Level"];

$menuName = $value["MenuName"];

$state = $value["State"];

$_SESSION['PID:'.$projectProduct][$level][$menuName]['menu_state'] = $state;

echo "[PID:".$projectProduct."][".$level."][".$menuName."][".$state."]
";

}

0 =>>>>> Array
[PID:1][Main][Kitchen][CHECKED]

在这里我想在ASP中做同样的事情

' setSession.asp

data = Request.Form("data")

For Each part In data("sessionData")

projectProduct = part("PID")

level = part("Level")

menuName = part("MenuName")

state = part("State")

Session("PID:" & projectProduct).Item(level).Item(menuName).Remove("menu_state")

Session("PID:" & projectProduct).Item(level).Item(menuName).Add "menu_state", state

response.write("[PID:" & projectProduct&"]["&level&"]["&menuName&"]["&state&"]
")

Next

输出空白

看起来它从来没有任何数据,但不会引发任何错误.我是否正确读取POST对象?

[编辑]

这是从Fiddler捕获的RAW POST数据:

data%5BsessionData%5D%5B0%5D%5BPID%5D=1&data%5BsessionData%5D%5B0%5D%5BLevel%5D=Main&data%5BsessionData%5D%5B0%5D%5BMenuName%5D=Kitchen&data%5BsessionData%5D%5B0%5D%5BState%5D=CHECKED

在这里,我在该字符串上使用了URL解码-

data[sessionData][0][PID]=1&data[sessionData][0][Level]=Main Level Plan&data[sessionData][0][MenuName]=Kitchen&data[sessionData][0][State]=CHECKED

看起来我现在应该可以通过使用

For Each part In Request.Form("data[sessionData]")

但什么也没发生.我添加了一个简单的循环来查看request.form,这是它所看到的:

for each x in Request.Form

Response.Write(x)

Next

' outputs -> data[sessionData][0][PID]data[sessionData][0][Level]data[sessionData][0][MenuName]data[sessionData][0][State]

我想这归结为只是正确地读取并正确处理了该字符串,如果发送了多个字符串,则会多次读取.正确?

解决方法:

RAW输出绝对有助于确定发生了什么.

发生的事情是jQuery将JSON结构转换为HTTP POST参数,但是在此过程中,它创建了一些过于复杂的键名.

如果您分解键值对,您会看到类似

data[sessionData][0][PID]=1

data[sessionData][0][Level]=Main Level Plan

data[sessionData][0][MenuName]=Kitchen

data[sessionData][0][State]=CHECKED

就Classic ASP而言,这只是字符串键和值对的集合,仅此而已.

弄清楚这些键是什么的正确方法是做您在问题中所做的事情,但要稍作改动.

For Each x In Request.Form

Response.Write(x) & "=" & Request.Form(x) & "
"

Next

当输出为HTML时,其外观类似于上面显示的细分.

掌握了什么键之后,您应该能够直接从Request.Form()集合中引用它们.

Dim pid: pid = Request.Form("data[sessionData][0][PID]")

Response.Write pid

输出:

1

标签:ajax,vbscript,asp-classic,php

来源: https://codeday.me/bug/20191111/2022359.html

php ajax post请求数据变形,php-在AJAX调用中读取POST数据相关推荐

  1. 随机从mysql中读取_如何实现MySQL表数据随机读取?从mysql表中读取随机数据

    文章转自 http://blog.efbase.org/2006/10/16/244/ 如何实现MySQL表数据随机读取?从mysql表中读取随机数据?以前在群里讨论过这个问题,比较的有意思.mysq ...

  2. matlab 十六进制数组,【MATLAB】MATLAB中读取二进制数据文件并加入到矩阵中

    MATLAB中读取二进制数据文件并加入到矩阵中的应用如下: 如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof 这些函数非常熟悉了,在 ...

  3. python读取图像数据流_浅谈TensorFlow中读取图像数据的三种方式

    本文面对三种常常遇到的情况,总结三种读取数据的方式,分别用于处理单张图片.大量图片,和TFRecorder读取方式.并且还补充了功能相近的tf函数. 1.处理单张图片 我们训练完模型之后,常常要用图片 ...

  4. C# 从Excel中读取时间数据

    之前写到从Excel中读取时间数据 //读取Excel数据Excel.Application xapp = new Excel.Application();string filepath = txt_ ...

  5. 从MySQL中读取股票数据——从零到实盘10

    前文介绍了把股票数据写入MySQL的过程,本文记录从MySQL中读取股票数据的过程. 到目前为止,我们在访问股票代码列表时,每次需要通过BaoStock重新下载.本文将把下载的股票代码保存到MySQL ...

  6. matlab处理记事本数据库,如何从Matlab的记事本文件中读取大块数据?

    如何从Matlab的记事本文件中读取大块数据? 我的数据采用以下格式: TABLE NUMBER 1 FILE: name_1 name_2 TIME name_3 day name_4 -0.01 ...

  7. R语言中读取excel数据的常用方式有哪些?

    R语言中读取excel数据的常用方式有哪些? 目录 R语言中读取excel数据的常用方式有哪些? R语言是解决什么问题的? R语言中读取excel数据的常用方式有哪些? R语言是解决什么问题的? R ...

  8. 2017年的双十一又一次刷新了记录,交易创建峰值32.5万笔/秒、支付峰值25.6万笔/秒。而这样的交易和支付等记录,都会形成实时订单Feed数据流,汇入数据运营平台的主动服务系统中去。数据运营平台的

    2017年的双十一又一次刷新了记录,交易创建峰值32.5万笔/秒.支付峰值25.6万笔/秒.而这样的交易和支付等记录,都会形成实时订单Feed数据流,汇入数据运营平台的主动服务系统中去.数据运营平台的 ...

  9. C# 操作地址 从内存中读取写入数据(初级)

    本示例以植物大战僵尸为例, 实现功能为 每1秒让阳光刷新为 9999.本示例使用的游戏版本为 [植物大战僵尸2010年度版], 使用的辅助查看内存地址的工具是  CE. 由于每次启动游戏, 游戏中阳光 ...

最新文章

  1. 基于自适应策略转移的深度强化学习
  2. C++知识点53——虚继承
  3. 泛在电力物联网分析—架构形式
  4. Servlet(JSP)中动态生成JPG PNG透明 水印图像
  5. java.lang.IllegalStateException: Unable to read meta-data for class 问题的解决
  6. vdbench的作用_Vdbench----文件系统IO,一致性校验,常见问题
  7. 如何生成唯一的Android设备ID?
  8. mac系统安装spss
  9. 6. NMF方法及实例
  10. scala(三):流程控制-分支控制、嵌套循环、for、while、do…while循环、循环中断、多支循环
  11. 小木工 ____农民工纪事之一
  12. Java小程序 个人缴税
  13. 从免费共享经济到知识付费系统,都是如何抓住时代风口的
  14. 数字IC面试总结(大厂面试经验分享)
  15. mysql怎么求时间差
  16. Kubernetes----ReplicaSet控制器
  17. 应用覆盖安装后桌面图标消失问题
  18. 分享获得Linux系统RHCE认证日记
  19. 摊牌了,微软始料未及,Excel和WPS用户:我们已经在使用了
  20. android 录屏自动运行,Android实现录屏直播+远程控制(二)

热门文章

  1. 虚函数指针(vptr)与虚函数表(vptb)
  2. 原来PC界面临洗牌的背后原因是因为存储
  3. python程序的扩展名是perl程序的扩展名是_Python 程序扩展名(py, pyc, pyw, pyo, pyd)及发布程序时的选择...
  4. bmp280c语言程序,51单片机读取BMP280 180 280气压值1602显示程序
  5. 建立一个mysql 文件命令是_使用命令行创建数据库
  6. matlab db(X R),matlab操作sqlite数据库
  7. oracle自动分区maxvalue,对Maxvalue上限范围分区进行spilt操作
  8. 假如明天灾难来临_北京医保容灾
  9. 我看周马,以及3Q大战背后的社会问题
  10. 买不买D50的N个理由