【问题标题】:How pass json Object string to javascript function?如何将 json 对象字符串传递给 javascript 函数?
【发布时间】:2018-08-25 11:36:29
【问题描述】:

我想将对象 json 字符串传递给 javascript 函数,但遇到一些错误。请帮忙。提前致谢。我正在使用 MVC5,

我的代码如下

.cshtml 内

<a href="javascript:void(0);" onclick="addToOrder('@JsonConvert.SerializeObject(item)')">@item.NAME</a>

我的 json 值在 addToOrder() 函数中的样子,

{
        "ITEM_ID": 1,
        "NAME": "PEPPER POPPERS",           
        "FOOD_TYPE": "VEG",
        "SIZES": [
          {
            "SIZE": "FULL",
            "PRICE": 220.00
          },
          {
            "SIZE": "MEDIUM",
            "PRICE": 170.00
          },
          {
            "SIZE": "8\"",
            "PRICE": 50.00
          },
        {
            "SIZE": "12\"",
            "PRICE": 40.00
        }]
    }

在 javascript 函数中 JSON.parse "SIZE": "8\"" 时抛出错误!

浏览器控制台出错

Uncaught SyntaxError: Unexpected string in JSON at position 37
at JSON.parse (<anonymous>)
at addToOrder (restaurantCounter.js:130)
at HTMLAnchorElement.onclick (1?deptid=6&counterid=1&department=1 AC:933)

请帮忙。谢谢。

【问题讨论】:

  • "SIZE": "8\"" 多了一个"
  • 我认为问题在于你有一个字段"SIZE" : "8\""。您可以使用其他语法:"SIZE" : '8"'。问题是该函数无法识别\" 符号并将其视为普通“
  • 单引号对 JSON 有效吗?我认为规范明确说明了双引号

标签: javascript json razor asp.net-mvc-5


【解决方案1】:

问题在于 json 本身。试试这个

{
        "ITEM_ID": 1,
        "NAME": "PEPPER POPPERS",           
        "FOOD_TYPE": "VEG",
        "SIZES": [
          {
            "SIZE": "FULL",
            "PRICE": 220.00
          },
          {
            "SIZE": "MEDIUM",
            "PRICE": 170.00
          },
          {
            "SIZE": "8\"",
            "PRICE": 50.00
          },
        {
            "SIZE": "12\"",
            "PRICE": 40.00
        }]
    }

【讨论】:

  • 您修复的一部分,没错,我认为由于 OP 收到 JSON.parse "SIZE": "8\"" 错误,这意味着其他问题。你可以看到我对 OP 帖子的评论
  • 但是 json 是在 .cshtml 编译时动态生成的。我在列表中的 SIZE 可能是任何东西。可能是Small,Full,8",12",4"等。如何管理?@Eugenio
  • @Pravin 现在出现问题是因为您使用 " 定义 json 的字段,但您也将其用作其中的字符串,因此程序进入错误状态,因为它可以不明白哪个是结束语。您可以通过使用' 作为您的字段来绕过它,并且仍然使用" 作为字符串,如下所示:"SIZE" : '8"'。这样程序就知道字符串从找到' 开始,到另一个' 结束。这够清楚了吗?
  • @Eugenio 你是对的。反斜杠将是 JavaScript 解析器的转义字符,而不是 JSON 解析器。因此 JSON.parse('{"SIZE":"8\""}') 将变成无效的 json。所以尝试转义 JSON .parse('{"SIZE":"8\\""}').
猜你喜欢
  • 1970-01-01
  • 2019-11-16
  • 2017-01-21
  • 2018-11-25
  • 2012-01-01
  • 2013-11-30
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多