2015-06-05 132 views
0

我试图将我的HTML表单数据转换为JSON对象以便通过Ajax提交 它似乎“工作”,但我没有得到我想要的JSON格式。可能有与HTML表单数据转换为简单的JSON对象

JSON.stringify($("#frm_login").serializeObject()) 

的JSON输出我得到做的是这样的:

[{"name":"username","value":"mike"},{"name":"password","value":"test123"}] 

但JSON输出我真的想为这个简单的东西,类似于:

{ 
"username":"mike", 
"password":"test123" 
} 

下面是我的简单的HTML和Ajax代码:

<form id="frm_login" class="ui-body ui-body-a ui-corner-all" data-ajax="false"> 
        <label for="username">Username:</label> 
        <input type="text" name="username" id="username" value="" /> 
        <label for="password">Password:</label> 
        <input type="password" name="password" id="password" value="" /> 
        <input type="button" data-theme="b" name="btn_login" id="btn_login" value="Login"> 

       </form> 

我的Ajax代码:

$(document).on('click', '#btn_login', function(){ 
      var url = 'http://localhost/proto01/api/users/token';  
      $.ajax({ 
       url: url, dataType: "json", async: true, 
       type: "POST", 
       headers: { Accept : "application/json; charset=utf-8", "Content-Type": "application/json; charset=utf-8" }, 

       data: JSON.stringify($("#frm_login").serializeObject()), 
       success: function (result) { 
        alert("Success"); 
       }, 
       error: function (request,error) { 
        alert('Network error has occurred please try again!' + error); 
       } 
      });   
     });   
+1

尝试此http://计算器。 com/questions/11376184/jquery-serializearray-key-value-pairs – Dhiraj

+1

[this fiddle](http://jsfiddle.net/csaq7sjt/)似乎显示你正在寻找的json,不确定你的'serializeObject'确实,我的是从这个答案复制:http://stackoverflow.com/a/1186309/526704 – DLeh

回答

1

如果你序列化它,你应该只是做data: $("#frm_login").serialize()

From this StackOverflow post(见第二,第三和第四期)

JQuery Serialize - 但请记住,与序列化它,你必须访问你的控制器使用Request.Form(.NET)的数据

否则,您可以自己创建它

var model = { 
    'username': $.trim($('[name="username"]').val()), 
    ... 
    ... 
}; 

$.ajax({ 
    url: url, dataType: "json", async: true, 
    type: "POST", 
    headers: { Accept : "application/json; charset=utf-8", "Content-Type": "application/json; charset=utf-8" }, 
    data: JSON.stringify(model), 
    processData: false, 
    success: function (result) { 
      alert("Success"); 
    }, 
    error: function (request,error) { 
      alert('Network error has occurred please try again!' + error); 
    } 
});