Javascript JSON.stringify古怪(对我来说)。为什么这样做?我如何改变它?

Javascript JSON.stringify古怪(对我来说)。为什么这样做?我如何改变它?,javascript,json,variables,stringify,Javascript,Json,Variables,Stringify,下面是我认为重要的代码 updates = {}; products = {}; newProducts = category.items[0].items; oldProducts = categoryData[i][0].items; itemsObj = {}; updates['changes'] = []; 然后是一组代码,将项添加到“更改”中,例如 itemsObj['update'] = "modify"; itemsObj['id'] = oldProduct.id;

下面是我认为重要的代码

updates = {};
products = {};
newProducts = category.items[0].items;
oldProducts = categoryData[i][0].items;
itemsObj = {};    
updates['changes'] = [];
然后是一组代码,将项添加到“更改”中,例如

itemsObj['update'] = "modify";
itemsObj['id'] = oldProduct.id;
itemsObj['type'] = oldProduct.type;
itemsObj['qty'] = newProduct.qty;
updates['changes'].push(itemsObj);
在所有的更新之后,我在测试期间调用了下面的警报。当我后来试图删除它时,我发现我不再得到上面的“更改”

alert(JSON.stringify(updates));
如果我没有执行上面的警告,那么“更新”(最终更新)只会在下面返回“productRequest”,而不会在上面返回“changes”。我尝试过将字符串化版本的更新设置为另一个变量,登录到控制台,以及我在网上找到的一些其他黑客方法,但只有上述警报对我有效。显然有办法解决这个问题,我不能在生产中发出警报

products['action'] =  "editProducts";
products['id'] =  xxxxxxxx;

updates['productRequest'] = products;

updateFinal = JSON.stringify(updates);
consoleLog(updateFinal);

有人知道我所期望的是一个简单的解决方案吗?

你真的没有发布足够的代码。一定有什么奇怪的事情发生了。不可能,JSON.Stringify会返回不同的结果,这取决于它是分配给变量还是在框中发出警报。如果您首先分配它并警告变量,会发生什么?我怀疑这只是你忽略的一个愚蠢的小错误。(我讨厌这些。;)我几乎可以保证您在代码中未显示的某个地方进行AJAX调用,并且您希望使用AJAX结果正常继续执行,而不是使用回调来完成处理?我同意@DarkFalcon的观点,在这种情况下,您应该阅读本文。如果是这样的话,任何警报都会起作用,它与stringify无关。进入JSON的内容来自JSON。所以在其他地方有一个问题。