Обработка 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, время: 06:34. |