相关疑难解决方法(0)

在jQuery中序列化为JSON

我需要将对象序列化为JSON.我正在使用jQuery.是否有"标准"方法来做到这一点?

我的具体情况:我有一个定义如下所示的数组:

var countries = new Array();
countries[0] = 'ga';
countries[1] = 'cd';
...
Run Code Online (Sandbox Code Playgroud)

我需要把它变成一个字符串传递给$.ajax()这样:

$.ajax({
    type: "POST",
    url: "Concessions.aspx/GetConcessions",
    data: "{'countries':['ga','cd']}",
...
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery serialization json

1189
推荐指数
11
解决办法
86万
查看次数

将表单数据序列化为JSON

我想在Backbone.js模型中对表单进行一些服务器前验证.为此,我需要将表单中的用户输入转换为可用数据.我发现了三种方法:

  1. var input = $("#inputId").val();
  2. var input = $("form.login").serialize();
  3. var input = $("form.login").serializeArray();

不幸的是,没有一个提供我需要的良好的可重用和可开发的JSON对象.我已经查看了Stack Overflow上的几个问题,但我发现只有一些额外的库.

不是Underscore.js,当前的jQuery或Backbone.js提供了一个帮助方法吗?

我无法想象没有这种功能的要求.

HTML

<form class="login">
    <label for="_user_name">username:</label>
    <input type="text" id="_user_name" name="user[name]" value="dev.pus" />
    <label for="_user_pass">password:</label>
    <input type="password" id="_user_pass" name="user[pass]" value="1234" />
    <button type="submit">login</button>
</form>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

var formData = $("form.login").serializeObject();
console.log(formData);
Run Code Online (Sandbox Code Playgroud)

输出

{
    "name": "dev.pus",
    "pass": "1234"
}
Run Code Online (Sandbox Code Playgroud)

Backbone.js模型

var user = new User(formData);
user.save();
Run Code Online (Sandbox Code Playgroud)

jquery backbone.js underscore.js

208
推荐指数
11
解决办法
55万
查看次数

压缩/取消嵌套嵌套JSON对象的最快方法

我将一些代码放在一起,以展平和展开复杂/嵌套的JSON对象.它有效,但它有点慢(触发'长脚本'警告).

对于我想要的扁平名称"." 作为数组的分隔符和[INDEX].

例子:

un-flattened | flattened
---------------------------
{foo:{bar:false}} => {"foo.bar":false}
{a:[{b:["c","d"]}]} => {"a[0].b[0]":"c","a[0].b[1]":"d"}
[1,[2,[3,4],5],6] => {"[0]":1,"[1].[0]":2,"[1].[1].[0]":3,"[1].[1].[1]":4,"[1].[2]":5,"[2]":6}
Run Code Online (Sandbox Code Playgroud)

我创建了一个基准,可以模拟我的用例http://jsfiddle.net/WSzec/

  • 获取嵌套的JSON对象
  • 压扁它
  • 仔细观察它并在修平时修改它
  • 取消它的原始嵌套格式,将其运走

我想要更快的代码:为了澄清,在IE 9 +,FF 24+和Chrome 29 中完成JSFiddle基准测试(http://jsfiddle.net/WSzec/)的代码明显更快(~20%+会很好) +.

以下是相关的JavaScript代码:当前最快:http://jsfiddle.net/WSzec/6/

JSON.unflatten = function(data) {
    "use strict";
    if (Object(data) !== data || Array.isArray(data))
        return data;
    var result = {}, cur, prop, idx, last, temp;
    for(var p in data) {
        cur = result, prop = "", last = 0;
        do {
            idx = p.indexOf(".", last);
            temp …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm

146
推荐指数
8
解决办法
12万
查看次数

带有序列化和额外数据的jQuery post()

好的,所以我试图找出是否可以发布序列化()和表单之外的其他数据.

这是我的工作,但它只发送'wordlist'而不是表单数据.

$.post("page.php",( $('#myForm').serialize(), { 'wordlist': wordlist }));
Run Code Online (Sandbox Code Playgroud)

有人有主意吗?

javascript jquery

143
推荐指数
5
解决办法
22万
查看次数

jQuery将已选中复选框的值获取到数组中

我试图获取当前检查的所有复选框的值并将它们存储到数组中.到目前为止,这是我的代码:

 $("#merge_button").click(function(event){
    event.preventDefault();
    var searchIDs = $("#find-table input:checkbox:checked").map(function(){
      return $(this).val();
    });
    console.log(searchIDs);
  });
Run Code Online (Sandbox Code Playgroud)

然而,这比我需要的更多.我不仅得到了价值,还有其他一些我不想要的东西.

["51729b62c9f2673e4c000004","517299e7c9f26782a7000003","51729975c9f267f3b5000002",prevObject:jQuery.fn.jQuery.init [3],context:document,jquery:"1.9.1",constructor:function,init:function ...]

我想要ID(在这种情况下前3项).

通过使用$.each值并将值推送到数组,我获得了所需的输出:

$("#find-table input:checkbox:checked").each(function(){ myArray.push($(this).val()); })
Run Code Online (Sandbox Code Playgroud)

["51729b62c9f2673e4c000004","517299e7c9f26782a7000003","51729975c9f267f3b5000002"]

但是我想使用$.map它,因为它为我节省了一行代码并且更漂亮.

谢谢

javascript jquery

122
推荐指数
5
解决办法
23万
查看次数

jquery json到字符串?

我不需要使用json字符串并使用$ .parseJSON,而是将对象存储在变量中,并将其存储为表示json的字符串.

(我正在处理的库需要格式错误的json类型,所以我需要弄乱它以使其工作.)

最好的方法是什么?

javascript jquery json

79
推荐指数
4
解决办法
21万
查看次数

如何将FormData(HTML5对象)转换为JSON

如何将HTML5 FormData对象转换为JSON?没有Jquery并像处理对象一样处理FormData中的嵌套属性.

javascript form-data

64
推荐指数
10
解决办法
8万
查看次数

如何在jquery中将表单数据作为对象获取

我试过了jQuery('#form_id').serialize().这仅返回表单数据作为url编码的字符串.是否可以将表单数据作为对象?

javascript jquery

59
推荐指数
2
解决办法
9万
查看次数

如何将jQuery.serialize()数据转换为JSON对象?

当表单包含多个输入数组字段时,是否有更好的解决方案来转换已经由jQuery函数serialize()序列化的表单数据.我希望能够将表单数据转换为JSON对象以重新创建一些其他信息表.所以告诉我一个更好的方法来将序列化字符串转换为JSON对象.

<form id='sampleform'>
    <input name='MyName' type='text' /> // Raf

    <!--array input fields below-->
    <input name='friendname[]' type='text' /> // Bily
    <input name='fiendemail[]' type='text' /> // bily@someemail.com

    <!--duplicated fields below to add more friends -->
    <input name='friendname[]' type='text' /> // Andy
    <input name='fiendemail[]' type='text' /> // Andy@somwhere.com

    <input name='friendname[]' type='text' /> // Adam
    <input name='fiendemail[]' type='text' /> // Adam@herenthere.com
</form>
Run Code Online (Sandbox Code Playgroud)

应用jquery方法获取数据

var MyForm = $("#sampleform").serialize();
/** result : MyName=Raf&friendname[]=Billy&fiendemail[]=bily@someemail.com&friendname[]=Andy&fiendemail[]=Andy@somwhere.com&friendname[]=Adam&fiendemail[]=Adam@herenthere.com
*/
Run Code Online (Sandbox Code Playgroud)

如何将此数据转换为JSON对象?它应该具有以下来自上述表单的示例JSON数据.

{
    "MyName":"raf",
    "friendname":[
        {"0":"Bily"},
        {"1":"Andy"},
        {"2":"Adam"}
    ],
    "friendemail":[
        {"0":"bily@someemail.com"},
        {"1":"Andy@somwhere.com"},
        {"2":"Adam@herenthere.com"} …
Run Code Online (Sandbox Code Playgroud)

javascript jquery serialization json

44
推荐指数
6
解决办法
9万
查看次数

使用jQuery POST和php序列化并提交表单

我正在尝试使用jQuery发送表单的数据.但是,数据无法到达服务器.你能告诉我我做错了什么吗?

<form id="contactForm" name="contactForm" method="post">
    <input type="text" name="nume" size="40" placeholder="Nume">
    <input type="text" name="telefon" size="40" placeholder="Telefon">
    <input type="text" name="email" size="40" placeholder="Email">
    <textarea name="comentarii" cols="36" rows="5" placeholder="Message"></textarea> 
    <input id="submitBtn" type="submit" name="submit" value="Trimite">
</form>
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

<script type="text/javascript">
    $(document).ready(function(e) {

        $("#contactForm").submit(function() {
            $.post("getcontact.php", $("#contactForm").serialize())
            // Serialization looks good: name=textInNameInput&&telefon=textInPhoneInput etc
            .done(function(data) {
                if (data.trim().length > 0) {
                    $("#sent").text("Error");   
                } else {
                    $("#sent").text("Success");
                }
            });

            return false;
        })
    });
</script>
Run Code Online (Sandbox Code Playgroud)

和服务器端:

$nume = $_REQUEST["nume"]; // $nume contains no data. Also tried $_POST
$email = $_REQUEST["email"]; …
Run Code Online (Sandbox Code Playgroud)

php forms jquery serialization form-submit

44
推荐指数
3
解决办法
24万
查看次数