2013-02-12 119 views
0

我有编码一个javascript的对象是这样的代码:字符串转换为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; 
} 

EDIT 2

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

EDIT 3(php_string的全部原因)

我试图抽象的问题,但现在我知道我不应该这样做了。

我有一些输入的与多个按钮命名为“选项”

当我点击这些按钮的页面形式,一个弹出窗口的动态领域(从上一个选择字段中选择的选项导出)在它上面,当我填写所有的输入时,我创建php_string并将其保存在隐藏字段中。

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

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

+2

为什么不使用本地php数组(通过在POST中使用数组序列化),然后只是'json_encode'它呢? – prodigitalson 2013-02-12 16:05:53

+3

你最初是如何以PHP数组的字符串结束的? – SDC 2013-02-12 16:05:54

+6

问题的最后部分的答案是:“我应该用JSON来代替”,这是非常强调的“是的,你应该”。 – SDC 2013-02-12 16:08:08

回答

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

+0

对不起,也许我没有解释清楚我的情况......我想通过Javascript将它转换为Object而不是PHP。我将编辑我的问题。 – 2013-02-12 16:15:26

+0

@CristianoSantos看到我的编辑。但是,在这两种情况下,尽管你会在'php_string'中使用你的对象。 – Mahn 2013-02-12 16:18:05

+0

我认为我没有很好地表达我的问题。当我点击一个按钮时,这种转换必须发生,所以我不能有任何PHP来帮助转换。 – 2013-02-12 16:20:25