Обработка JSON
Проблема в обработке полученного json от php с помощью GetXMLHttpRequest
Если все делаю на одной странице то работает:
<?php
$nonsequential = array("type"=>"foo", "test"=>"bar", "test1"=>"baz", "test3"=>"blong");
$nonsequential=json_encode($nonsequential);
echo '<script type="text/javascript">';
echo 'people='.$nonsequential;
echo '</script>';
?>
<script>
function test() {
alert(people.type);
}
</script>
<input id="test" type="button" value="Вывод данных" onclick="test()" />
А когда по ajax то не получается. Пробовал по всякому. Сейчас сделал так что php возвращает ResponseText "{"type":"error","text":"11111"}" и затем я создаю массив с этими данными, но не пашет. Вот всё:
function getXmlHttpRequest(){
if(window.XMLHttpRequest)
return new XMLHttpRequest();
else
return null;
}
//Получение и отправка параметров
function sendAjaxFunc(){
var qFile = '/query.php'; //ссылка на исполняемый файл php (тип строка)
//-Получение данных формы
var val1 = document.getElementById('login_auth').value;
var val2 = document.getElementById('passw').value;
var val3 = document.getElementById("rememberme").checked
//-//
var reqStr =
'query=query_login&'+
'login='+val1+
'&password='+val2+
'&rememberme='+val3;
getAjaxXML(reqStr,qFile);
}
//Обрабока параметров
function getAjaxXML(reqStr,qFile){
var reqString = getXmlHttpRequest();
reqString.onreadystatechange = function(){
if(reqString.readyState != 4) return;{
var rJSON = new Array(reqString.responseText);
alert(rJSON.text);
}
};
reqString.open('GET', '<?=baseurl?>'+qFile+'?'+reqStr, true);
reqString.send(null);
}
PHP возвращает : {"type":"error","text":"11111"} Мне алерт выдает undefined |
А где ты вычитал что new Array() умеет парсить JSON?:D
|
я думал что строка же типа массива и оно её типо поймет :)
а как тогда обработать это? Или как то по другому надо вывести из php? Лучше конечно через json, но я хз как это принять... |
Всё. Ваша подсказка натолкнула меня на выход :D
var rJSON =JSON.parse(reqString.responseText); |
Цитата:
Цитата:
Цитата:
var response = JSON.parse(responseText); |
Просто в php эквипенисуально, там массивы сразу коллекции и по привычке можно так подумать и про js. Который если сделать вот так
arr[1]='odin'; arr[100500]='dohera'; в цикле будет перебирать все 100500. |
Кстати на обратном ходу json_decode() по умолчанию выдает stdClass. Я тоже думал будет Array и пять минут искал откуда у меня взялся stdClass в классовых дебрях. Оказалось надо было мануал почитать и воткнуть false вторым аргументом.
Обычно взад не дают, да, это частный случай чтения json из куков. Чтоб не парсить текст - жисон туда, жисон оттудова. |
| Часовой пояс GMT +3, время: 08:28. |