Показать сообщение отдельно
  #1 (permalink)  
Старый 07.02.2015, 08:56
Аспирант
Отправить личное сообщение для 1lider Посмотреть профиль Найти все сообщения от 1lider
 
Регистрация: 12.04.2013
Сообщений: 86

Вставка json данных
Добрый день. Вчера читал документацию по XMLHttpRequest. Нацарапал небольшой код. Не могу получить от сервера нормальную JSON строку и вывести её на страницу. В 43 и 44 строках кода, надо явно что-то переписать.


Скрипт JS:
var MyRequest = function(options) {
	options = {
		type: options.type.toUpperCase() || 'POST',
		url: options.url || '',
		dataType: options.dataType.toUpperCase() || 'HTML',
		param: options.param || '',
		success: options.success || function(){},
		error: options.error || function(){}
	}
	var xhr;
	var rand = Math.floor(Math.random( )*(9999999+1));
	if (window.XMLHttpRequest) {
        try { xhr = new XMLHttpRequest(); }
		catch (e){}
    } else if (window.ActiveXObject) {
		try { xhr = new ActiveXObject("Msxml2.XMLHTTP.6.0"); }
		catch(e) {}
		try { xhr = new ActiveXObject("Msxml2.XMLHTTP.3.0"); }
		catch(e) {}
		try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch(e) {}
		try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
		catch(e) {}
	}
	xhr.open(options.type, options.url, true);
	if(options.dataType == 'HTML') {
		xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
	} else if(options.dataType == 'JSON') {
		xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
	}
	xhr.send(encodeURIComponent(options.param));
	xhr.onreadystatechange = function() {
		if(xhr.readyState == 4) {
			if(xhr.status == 200) {
				if(options.dataType == 'HTML') {
					return options.success(xhr.responseText);
				} else if(options.dataType == 'JSON') {
					// ЗДЕСЬ НАДО ЧТО-ТО ИСПРАВЛЯТЬ
					// ЗДЕСЬ НАДО ЧТО-ТО ИСПРАВЛЯТЬ
					// ЗДЕСЬ НАДО ЧТО-ТО ИСПРАВЛЯТЬ
					// alert(data) выдаёт 1234
					// alert(data.result) выдаёт undefined
					eval('var data = ('+xhr.responseText+')');
					return options.success(data);
				}
			} else {
				return options.error(xhr.statusText);
			}
		}
	}	
}
function get_data() {
	MyRequest({
		type: 'GET',
		dataType: 'JSON',
		url: '/my_result.php',
		success: function(data) {
			alert(data.result); // выдаёт undefined
		}, error: function(data) {
			alert("ERROR");
		}
	});
}


Файл my_result.php:
<?php
// так как тестирую именно json, то сразу делаю так:
echo json_encode(array('result'=>'1234'));
?>
Ответить с цитированием