转换为数据转换成类似于JSON

问题描述:

的字符串是否有执行下面的代码转换为数据转换成类似于JSON

<form id="myform" onsubmit="return saveUserData('firstname','lastname');" method="post"> 
function saveUserData() { 
    createJSONString(arguments); 
    return false; 
} 

function createJSONString(arguments) { 
    var userDetails = "{"; 
    for (i = 0; i < arguments.length - 1; i++) { 
     userDetails += '"' + arguments[i] + '":' + '"'  +document.getElementById(arguments[i]).value + '",'; 
    } 
    userDetails += '"' + arguments[i] + '":' + '"' + document.getElementById(arguments[i]).value + "}"; 
    alert(userDetails); 
} 

基本功能saveUserData从形式叫提交按钮什么更好的办法。所以我们的想法是将参数传递给函数并创建一个类似JSON的字符串,这样我就可以将它存储在Chrome和Firefox的localStorage变量中。这个想法并不是失败,因为将来如果我们添加中间名,JavaScript代码不需要改变,只有HTML会改变。 有没有更好的实现方法?

感谢

+0

我试过缩进代码和粘贴。不知何故,每次我在我的编辑器中对代码进行格式化并将其粘贴到此处时,对齐会变得无用。我应该如何确保代码正确缩进? – user1536201 2012-08-04 06:56:30

+0

假设我的编辑已被批准,我为您设置了代码格式。通常,它是四个空格而不是制表符。 – Daedalus 2012-08-04 06:59:41

+0

当字段值恰好包含双引号时会发生什么?为什么你使用这个“JSON like”格式(在一个名为'createJSONString'而不是'createJSONishString'的函数中)而不是仅仅使用JSON? – DCoder 2012-08-04 07:31:31

您可以透过JSON.stringify方法使JSON字符串。使用json库的 ,chrome和ff已经构建在这个方法中。

http://json.org/

首先你得让JavaScript对象这样的数据。

var data = { 
    name : 'blu..', 
    age : 19 
}; 

JSON.stringify(data); 

// result is => "{"name":"blu..","age":19}" 



function createJSONString(arguments) { 
    var obj = {};  
    for (i = 0; i < arguments.length - 1; i++) { 
     obj[arguments[i]] = document.getElementById(arguments[i]).value; 
    } 

    return JSON.stringify(obj); 
}; 
+0

谢谢我在看到DCoders的评论后才实施了同样的功能。 – user1536201 2012-08-04 08:12:54