javascript - 包含 FormData 对象的 Internet Explorer 请求在 Struts 2 中失败
问题描述
总结一下:我对 formData 对象内容的所有请求都适用于 Firefox 和 Chrome。其中一些也可以在 IE11 中工作,但有一个不能。奇怪的是请求没有显着不同。
我使用这个 FormData 对象通过 Json 向 Struts2 发送数据:
formData.append("JsonInput", angular.toJson(encodeURIComponent(JSON.stringify(myVariable))));
此请求在 IE11 中无效,但在 Firefox 和 Chrome 中有效:
$http({
method: 'POST',
url: appServer + '/rcdCalSaveData',
respondType: 'json',
headers: { 'Content-Type': undefined },
data : formData
})
该示例的实际变量名称已更改。
我在后台控制器中的 Action 方法的结果是 null (JsonInput)。
除此之外,请求发送的其他 FormData 工作(差别不大):
formData.append("JsonAddVariable", angular.toJson(encodeURIComponent(JSON.stringify(anotherVariable))));
$http({
method: 'POST',
url: appServer + '/rcdDefAddfdkrfikef',
respondType: 'json',
headers: { 'Content-Type': undefined },
data: formData,
params: { mode: (service.modeAdd ? 1 : 0) }
})
所以我认为传递的变量是问题(第一个示例中的数组和第二个示例中的对象)。但是,如果我用它替换第一个 FormData 它也可以:
var temp = "%5B%7B%22firstVar%22%3A7%2C%22secondVar%22%3A0%2C%22thirdVar%22%3A-2%7D%5D";
formData.append("JsonInput", temp);
对应于:[{"firstVar":7,"secondVar":0,"thirdVar":-2}]
那么哪些 Object 变量内容会导致 AngularJS 和 Struts2 出现问题?
(我使用的是 IE11)
解决方案
推荐阅读
- youtube-api - 如何获取我订阅的频道的 ID?
- django - 如何在 django ORM 的 WHERE 子句上使用 CASE 语句进行查询?
- c - 如何使用指针填写 C 中的结构数组?
- python-3.x - 节 SSLError: HTTPSConnectionPool(host='raw.githubusercontent.com', port=443)
- php - 二维数组在 laravel 中没有循环
- excel - 如何使用 COUNTIF 计算日期范围之间的特定文本?
- kdb - kdb:避免在字符串中转义双引号
- python - 层的输入与预期输入的层不兼容
- python - 在不显示元素的情况下测试 Python Tkinter GUI 应用程序
- ruby-on-rails - 为什么我的 js 的子文件夹(在 sublime 上)带有淡淡的灰色?