【问题标题】:When posting Json using jQuery posted data is different than payload?使用 jQuery 发布 Json 时发布的数据与有效负载不同?
【发布时间】:2013-07-19 17:22:06
【问题描述】:

谁能告诉我为什么,当我在 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 Console(无斜杠)测试我的 MVC 4 控制器操作时,一切正常。

某处事情并没有按照他们应该的方式进行。有什么想法吗?

谢谢!

【问题讨论】:

  • 为什么" 就在[ 之前和] 之后?
  • 由于您构建 json 的方式,是的,反斜杠应该在那里。你所拥有的是json里面的json。

标签: javascript jquery ajax asp.net-mvc


【解决方案1】:

仔细看这部分:

TradeOffers":"[{"OfferedProductId

冒号后面的引号告诉我 TradeOffers 的值实际上是一个字符串,它恰好包含一个 JSON 数组。 Chrome 只是确保它以字符串形式出现在另一端,并在其中包含任何引号。

您只需要找到 TradeOffers 的设置位置,以及它是否有问题。好笑,这种问题最近好像很常见……

【讨论】:

  • 是的,Katana314 是对的。 TradeOffers 的值是对象数组还是此类事物的字符串表示形式?
  • 感谢大家的意见!是的,值 op TradeOffers 是一个对象数组。它不应该是字符串表示! :-)。我对 JSON 很陌生,很好奇如何解决这个问题?去掉[{"OfferedProductId前面的引号?仅供参考 - 我正在发布到一个 MVC 4 控制器操作,该操作执行一个反序列化传入请求的视图模型。 Please look at a previous question regaring this.
  • @MetaVerse 好吧,如果您正在手写 JSON,那么解决方案很简单。删除提到的引号和最后一个引号,然后删除其中其他引号上的斜线。但我猜它是由您的 Javascript 或其他程序生成的。在这种情况下,您需要找到将 TradeOffers 数组转换为 JSON 的位置;在某些时候,它似乎过早地执行了不必要的“JSON.stringify”。
【解决方案2】:

搞定了伙计们:-)

感谢您让我走上正轨,指出我传递的是字符串而不是数组。

经过更多研究后,我在this post 的启发下修复了它,并最终创建了以下代码:

    var productOffers = $("div.tradeOffer").map(function () {
    var productOffer = { OfferedProductId: $(this).find(".selectTraderOffer:selected").val(), OfferedQuantity: $(this).find(".tradeProductQuantity").val() };
    return productOffer;
}).get();
return productOffers;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 2011-09-09
    相关资源
    最近更新 更多