将PHP数组的字符串转换为javascript对象

时间:2013-02-12 16:04:09

标签: php javascript arrays json javascript-objects

我有一个代码将javascript对象编码成这样的东西:

<script>
    var php_string='array("one"=>"value_one","two"=>"value_two")';
</script>

现在我想知道如何将其转换为:

{
    "one":"value_one",
    "two":"value_two"
}

php_string的内容在$_POST变量上发送给PHP。无论如何要做到这一点,还是应该使用JSON?

修改

根据要求,以下是制作php_string的代码:

function encodeFormOptions(inputsWrapper){
    var the_serialize=$(inputsWrapper).find(":input").serializeArray();
    var text="array(";
    $.each( the_serialize, function( key, value ) {
        text+='"'+value["name"]+'"=>'+'"'+value["value"]+'",';
    });
    if (text.charAt(text.length-1)==",")
        text=text.substring(0,text.length-1);
    text+=");";
    return text;
}

编辑2

我忘了说我需要在纯Javascript中进行此转换。换句话说,我需要将数组字符串解析为javascript对象,因为当我点击页面上的某个按钮时,我需要读取当前php_string内的值。

编辑3(php_string)的完整原因

我试图解决这个问题,但现在我发现我不应该这样做。

我有一个页面表单,其中包含一些输入和多个名为“options”的按钮

当我点击这些按钮中的任何一个时,弹出窗口显示动态字段(从选择字段上选择的选项派生),当我填写所有输入时,我创建php_string并保存它在一个隐蔽的领域。

现在我希望当我再次单击其中一个“选项”按钮时,我可以读取我在隐藏字段上保存的内容,以便设置弹出输入应该显示的默认值,如果所选的选项选择字段不会改变。

然后在PHP上解析隐藏字段。

1 个答案:

答案 0 :(得分:1)

编辑:

看起来这可能比你想要的更接近:

<script>
    var php_string = 'array("one"=>"value_one","two"=>"value_two")';
    var php_string = JSON.parse(php_string.replace(/array\(/g, '{').replace(/\)/g, '}').replace(/=>/g, ':'));
</script>

它当然不是处理它的最优雅方式,因此请考虑重构产生该输出的内容。例如,您可以从客户端发送json并在服务器端使用json_decode