Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Перевести текст в объект (https://javascript.ru/forum/misc/21249-perevesti-tekst-v-obekt.html)

systemiv 02.09.2011 16:07

Перевести текст в объект
 
У меня есть скрипт php:
<?php 
echo '{"one":"one_text","two":"two_text"}';
?>


И есть объект XMLHttpRequest()
Данные из него получаю через responseText
Как эти данные(текст) преобразовать в объект?

dmitriymar 02.09.2011 16:10

json

systemiv 02.09.2011 16:16

function makeRequest() {
	httpRequest = new XMLHttpRequest();
	httpRequest.onreadystatechange = function () {
		getProduct(httpRequest);
	};
	url = 'test.php';
	httpRequest.open('POST', url, true);
	httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	httpRequest.send(null);
}

function getProduct(httpRequest) {
	var jsonText = httpRequest.responseText;
	jsonText = jsonText.json;
	document.write(jsonText.one);
}

Как?

Sweet 02.09.2011 16:30

var jsonText = JSON.parse( httpRequest.responseText );

systemiv 02.09.2011 16:33

Цитата:

Сообщение от Sweet (Сообщение 124354)
var jsonText = JSON.parse( httpRequest.responseText );

Спасибо огромное)

B@rmaley.e><e 02.09.2011 17:27

И http://json.org/ для старых браузеров.

systemiv 03.09.2011 01:56

Не хочется создавать новый топик.
Как можно получить доступ к данным, которые пришли, вне функции инициализации XMLHttpRequest

melky 03.09.2011 03:52

httpRequest.onreadystatechange = function() {
    if (httpRequest.readyState === 4 && httpRequest.status === 200) getProduct(httpRequest.responseText);
};

systemiv 03.09.2011 11:10

Не, ну это понятно.
Но мне нужно будет использовать этот ответ не только в каллбэк функции.
А по длине всей программы.
Можно конечно в калбак функцию поместить всю оставшуюся программу, но может есть более лучшее решение

melky 03.09.2011 11:18

а как ты будешь использовать ответ в скрипте, если запрос асинхронный?

добавить к глобали этот текст
*window.responseText = htmlRequest.responseText.


Часовой пояс GMT +3, время: 15:51.