2013-02-12 3 views
0

У меня есть код, который кодирует JavaScript Object во что-то вроде этого:Преобразование строки из PHP массива JavaScript Object

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

Теперь я хотел бы знать, как я могу преобразовать это в том, что:

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

Содержимое php_string отправлено PHP на переменную $_POST. В любом случае, я должен использовать JSON вместо этого?

EDIT

Как спросил, вот код, который сделал мой 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

+3

Как вы в конечном итоге столкнулись с этой строкой массива PHP? – SDC

+6

Ответ на последнюю часть вопроса: «Должен ли я использовать JSON вместо этого» - это очень решительная «ДА, ВЫ ДОЛЖНЫ». – SDC

ответ

1

Edit:

Это кажется, что это может быть ближе, чем вы ищете:

<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, а не PHP. Я отредактирую свой вопрос. –

+0

@CristianoSantos см. Мое редактирование. Однако в обоих случаях у вас будет ваш объект в php_string. – Mahn

+0

Я думаю, что я не очень хорошо выражаю свою проблему. Это преобразование должно произойти, когда я нажимаю кнопку, и поэтому я не могу использовать PHP для преобразования. –