将表单元素转换为json并将其POST到服务器,其中包括一些作为一组参数

Convert form elements to json and POST them to a server including some of them as a group of params

本文关键字:参数 一组 其中包括 服务器 转换 元素 表单 json POST      更新时间:2023-09-26

我有这个表单

<form name="pass_form" id="form" >
Username: <input type="text" name="username" id="username" >  </br>
Current password: <input type="password"  name="currentpass" id="currentpass">  </br>
New password: <input type="password" name="newpass" id="newpass">  </br>
New password confirmation: <input type="password" name="newpassconf" id="newpassconf">     </br>
<input type="button" value="Update" onclick="myCall()" />

我想把上面的表单提交成json字符串如下所示。我已经处理了验证,并一直试图使json字符串无效

{"jsonrpc":"2.0","method":"changepass","params":["username","currentpass","newpass"],
"id":"1"}

在服务器端,我想得到它这样,并使用它在我的RPC函数在Perl

var username = "username";
var currentpass = "currentpass";
var newpass = "newpass";
var UserInfo = new Array();
UserInfo.push(username);
UserInfo.push(currentpass);
UserInfo.push(newpass);
var data = new Object();
data["jsonrpc"] = "2.0";
data["method"] = "changepass";
data["id"] = "1";
data["params"] = UserInfo;
console.log(JSON.stringify(data));

尝试在ajax中提交表单数据…如果你仍然没有得到你想要的输出,详细说明你的问题。

建议大家使用jquery ajax post方法。在服务器端使用通常的后捕获。祝你好运

$.post("url",{
    "method":"changepass",
    "id":"1",                                    
    username: $("#username").val(),
    currentpass: $("#currentpass").val(),
    newpass: $("#newpass").val()
      },
         function(data){
             //do here after callback
         }, "json");

或使用jquery生成json:

    var jsonString = '{"jsonrpc":"2.0",
                           "method":"changepass",
                           "params": [                                                                                                                                                              
"'+$("#username").val()+'",
    "'+$("#currentpass").val()+'",
    "'+$("#newpass").val()+'"
                                     ],
                           "id":"1"}';

没有自动生成插件来将表单数据提取为JSON。唯一的方法是从适当的控件中手动选择数据,并形成您想要发布到服务器的自定义对象。

你可以给post对象添加任意数量的额外成员。

这与@jakentus所描述的相似。

var _datatoPost = {
method:'changepass',
id:1,
username:$("#username").val(),
currentpass: $("#currentpass").val(),
newpass: $("#newpass").val()
};
//now use JSON.js to convert it to JSON
var _jsonPost = $.toJSON(_datatoPost); //using Json plugin
//now send it via ajax