JSON使用jQuery中的变量进行字符串化

时间:2012-10-22 13:22:34

标签: jquery json stringify

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

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());
});

答案:正如大卫在评论中提到的,这是因为我在函数外宣布了数据变量。

3 个答案:

答案 0 :(得分:0)

变化:

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

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

你现在两次宣布params

答案 1 :(得分:0)

也许你可以使用dataType:“string”

答案 2 :(得分:0)

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