【问题标题】:JSON stringify with variables in jQueryJSON字符串化与jQuery中的变量
【发布时间】:2012-10-22 22:12:49
【问题描述】:

我正在尝试发布一些 JSON,我需要在其中包含输入字段中的一些值。我有两个输入字段,分别是用户名和密码。

data = JSON.stringify({
  "jsonrpc": "2.0",
  "method": "POST",
  "params": {
    "params": {"username": $('#username').val(), "password":  $('#password').val()}
  }
});

当我对值进行硬编码时,我可以很好地发送它,问题是它不会从输入字段发送值。我做错了什么?

我是这样发送的:

$.ajax({
  url:url,
  type:"POST",
  crossDomain: true,
  dataType: "json",
  data : data,
  headers: {
    'content-type': "application/json; charset=utf-8"
  },
  success: function(data){
        $("#result").append('<p>Token: ' + data.result.token + '</p>');
        $("#result").append('<p>Name: ' + data.result.Customer.Name.value + '</p>');
        $("#result").append('<p>ID: ' + data.result.Customer.ID + '</p>');
  },
  error: function(data, status, xhr) {
alert("Error");
  }

});

我尝试简化事情,所以我在单击按钮时将值添加到div。效果很好:

$("#login").click(function() {
  $('#test').append($('#username').val());
});

回答:正如大卫在 cmets 中提到的,这是因为我在函数之外声明了数据变量。

【问题讨论】:

  • "params": { "params": ... } } 似乎不合逻辑
  • 如果在您对值进行硬编码时代码工作正常,则说明您访问值的方式有问题。 console.log(data) 是什么样的?字段存在吗? data 的声明是否在字段中有值时被评估?
  • 是的,如果我只是将值返回到屏幕,它们就可以正常工作。我开始思考 stringify 是否不允许动态数据?
  • stringify 将生成您传递给它的任何对象的字符串表示形式,无论该对象是如何构造的。如果您可以传递完全相同的对象。因此,如果硬编码值有效,那么您访问值的方式就会出现问题。 console.log(data) 是什么样的?字段存在吗?当字段中有值时,是否正在评估数据声明? 将值返回到屏幕是什么意思?
  • var data = JSON.stringify(x) 将创建对象x 的字符串表示,因为它是在评估该行代码时。 data 只是一个字符串,没什么神奇的。例如,如果这是在页面加载中完成的,并且您的 &lt;input id="username" /&gt; 在页面加载时为空,那么 x 中该属性的值将是一个空字符串,并且生成的 data 字符串将反映这一点。如果您稍后在输入字段中输入一个值,这不会神奇地改变您的data 字符串变量的内容。

标签: jquery json stringify


【解决方案1】:

变化:

"params": {
 "params": {"username": $('#username').val(), "password":  $('#password').val()}
}

"params": {"username": $('#username').val(), "password":  $('#password').val()}

你在瞬间声明了两次参数

【讨论】:

  • 我知道,但这就是我需要发送它的方式。它实际上是这样声明的。
【解决方案2】:

也许你可以使用 dataType: "string"

【讨论】:

    【解决方案3】:

    在原始问题中添加了答案。特别感谢 David Hedlund 帮助我朝着正确的方向前进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-25
      • 2016-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多