我不确定发生了什么。我已经筋疲力尽地寻找答案。我以为是 processData 但在这种情况下 ajax 不会触发。我无法为我的生活弄清楚发生了什么。
我正在尝试通过 POST、ajax 发送数据。
由于我的数据是如何设置的,在页面中,我实际上可以创建一个哈希并将其推送到一个数组中。所以我有类似的东西。
我正在形成的数据如下所示:
在我的初始化函数中,我设置了一些变量。
this.dataHolder = [];
在我的插件中的一个方法中:
_acceptData:function(){
var item = {};
item[this.schema.itemId] =
{
"Color" : this.schema.color,
"Size" : this.schema.size,
"Cost" : this.schema.cost
}
return item;
},
基本上我有一些其他的方法等等,但要点是上面的数据结构被放入:this.dataHolder
当我转储数据时,看起来应该如此。代码中的各种console.logs向我展示了数据格式正确等。但是当我将它传递给ajax数据时......它会做一些不稳定的事情。
当我有我的 ajax .. ala:
var self = this;
.ajax({
type: "POST",
data : {matchedItems : self.dataHolder},
dataType: json,
url : /some/path/
我尝试了很多不同的东西,在所有情况下,数据要么是未定义的(当我发布它时),要么是一种奇怪的格式,比如:(在日志中)
$VAR1 = {
'matchedItems[0][itemid1][Color]' => 'Blue',
'matchedItems[0][itemid1][Size]' => '11',
'matchedItems[0][itemid1][Cost]' => '33.90',
'matchedItems[1][itemid2][Color][]' => 'Silver',
'matchedItems[1][itemid2][Size]' => '13',
'matchedItems[1][itemid2][Cost]' => '44',
'matchedItems[2][itemid3][Color][]' => 'Red',
'matchedItems[2][itemid3][Size]' => '9',
'matchedItems[2][itemid3][Cost]' => '23'
};
或不同的排列
data : MatchedItems : {self.dataHolder}
或者
data : {MatchedItems : {self.dataHolder}}
等等..没关系,POST总是得到一些非常奇怪的格式。
这就是我发送它时它的外观以及他们如何接收它。
matchedIeds = {
itemId1 :
{
Color : Red,
Size : 11,
Cost : 44
},
itemId2 :
{
Color : Blue,
Size : 8,
Cost : 12
},
itemId3 :
{
Color : Blue,
Size : 19,
Cost : 88.09
}
}
我的意思是,我正在这样设置我的数据,所以我看不出有什么问题。
注意:我尝试了 processData : false,但这根本没有帮助。
编辑: 这是代码 console.log 在我将其传递给 .ajax 方法之前编写的代码。 控制台日志
[Object { itemid1={...}}, Object { itemid2={...}}, Object { itemid3={...}}]
这是帖子的参数: jquery.js (line 641) POST http://www.myurl/to/test
200 OK 79ms
jquery.js(第 7829 行)
标头PostResponseJSONCookies
Parametersapplication/x-www-form-urlencoded
undefined undefined
undefined undefined
undefined undefined