当使用jQuery发布Json时,发布的数据与有效负载不同
When posting Json using jQuery posted data is different than payload?
有人能告诉我为什么当我在Jquery中构造字符串时,在Chrome Javascript调试器中它显示为:
{"ClaimType":"Trade","ClaimedProductId":4,"ClaimingUserId":3,"Message":"","TradeOffers":"[{"OfferedProductId":"3","OfferedQuantity":"2"},{"OfferedProductId":"3","OfferedQuantity":"5234"}]"}
但是,当我使用$.ajax发布它,然后在Chrome调试器中检查post请求的有效负载时,它看起来像:
{"ClaimType":"Trade","ClaimedProductId":4,"ClaimingUserId":3,"Message":"","TradeOffers":"[{'"OfferedProductId'":'"3'",'"OfferedQuantity'":'"2'"},{'"OfferedProductId'":'"3'",'"OfferedQuantity'":'"5234'"}]"}
那些反斜杠不应该在那里,对吗?当我用Rest控制台测试我的MVC 4控制器操作时(没有斜杠),一切都很好。
有些地方的事情并没有按预期发展。有什么想法吗?
谢谢!
仔细看这部分:
TradeOffers":"[{"OfferedProductId
冒号后面的引号告诉我TradeOffers的值实际上是一个字符串,它恰好包含一个JSON数组。Chrome只是确保它会以字符串的形式出现在另一边,并带有任何引号
你只需要找到TradeOffers的设置位置,以及它是否有问题。有趣的是,这种问题最近似乎很常见。。。
钉住它的家伙:-)
感谢你让我走上正轨,指出我传递的是字符串而不是数组。
经过更多的研究,我只是受这篇文章的启发修复了它,并最终创建了这个代码:
var productOffers = $("div.tradeOffer").map(function () {
var productOffer = { OfferedProductId: $(this).find(".selectTraderOffer:selected").val(), OfferedQuantity: $(this).find(".tradeProductQuantity").val() };
return productOffer;
}).get();
return productOffers;
相关文章:
- 如何有效地将游戏数据存储在URL查询字符串中
- 选择具有特定数据的所有 html 标记的最有效方法是什么 - [适当性],无论值如何
- 从文件目录结构创建JSON数据的有效功能
- 在Sencha Touch中请求有效载荷数据
- 数据插入有效,但不显示警报框消息
- 如何在(javascript)Firefox插件中有效地存储传入数据
- 如何从请求有效负载将数据发布为 json
- 这是在网页中存储和使用从数据库加载的数据的最有效方法
- 用于散列有效负载发布数据的最佳加密货币
- 在 AngularJS 中,如何在输入字段中输入有效数据时在输入字段前面显示绿色刻度线
- 如何链接 GCM Chrome 推送通知和有效负载数据
- 有效地对字典(或 JS 中的任何键值数据结构)进行排序word_number键
- 用于构建用于查询的 JSON 数据的有效方法
- 本地存储无法传输数据,并非在所有浏览器中都有效
- JSON 字符串有效,但 JSON 数据不准确
- 将一些数据转换为json格式,但不确定它是否有效
- 使用 Ext.ajax.Request 以非 json 格式提交有效负载数据
- jQueryajax,附加数据有效,但数据对另一端(计算机/用户)可见
- 在不中断页面的情况下,使用数据有效地重复更新DOM
- 用Javascript发送数据/有效载荷到Google Chrome推送通知