[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с асинхронной передачей данных через POST
Страницы: 1, 2
Kapitan79
Цитата

Вообще, JSQN - это тоже "просто текстовая строка", куда упакованы данные в определенном формате. Используй для кодирования-декодирования функции JSON.parse() & JSON.stringify() в JS и json_encode() & json_decode() в ПХП.



Dev_pvu.prototype.sendinit = function()
{
this.send_data =
{
"jsonrpc": "2.0",
"method": "init",
"params":
{
"timestamp": "дата-время в формате POSIX",
"complex" : "pvup1"

},
"id": "1"
};
this.send_json.JSON_value = this.send_data;
this.send_json.send_ajax();
}

function Send_JSON()
{
this.JSON_value = '' ; //переменная с данными запроса JSON
this.server = 'ajax_controller.php' ; //файл обработчика запроса на сервере
this.request = this.getXmlHttpRequest() ; //объект для отправки запроса
this.url = "php/"+this.server ; //url файла обработчика запроса на сервере
this.data = 'st='+this.JSON_value ; //данные, которые будут отправлены на сервер
this.request_data = {} ; //данные, полученные от сервера
this.sel_comp = new Sel_complex() ; //экземпляр класса обработки комплексов
}

/** Отправка переменной JSON для обработки на сервер и получение ответа */
Send_JSON.prototype.send_ajax = function()
{
alert (this.JSON_value);
this.request.onreadystatechange = function ()
{
var send_json = new Send_JSON;
if (send_json.request.readyState == 4)
{
if (send_json.request.status == 200)
{
/** Получены данные из аякса в виде строки. Обрабатываем. */
if (send_json.request.responseText != '')
{
send_json.request_data = send_json.request.responseText;
send_json.sel_complex_script();
}
}

else
{
if (send_json.request.status != 200 ) {document.write(" Произошла ошибка. Request status "+send_json.request.status );}
if (send_json.request.status == 500 ) {document.write(" - внутренняя ошибка сервера. " );}
if (send_json.request.status == 404 ) {document.write(" - сервер не найден. " );}
}
}
}
;
this.request.open("POST", this.url, true) ; // указываем метод post
this.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") ;
this.request.send(this.data) ; // посыл данных, вместо null вставляем переменную с параметрами
};

Send_JSON.prototype.getXmlHttpRequest = function ()
{
if (window.XMLHttpRequest)
{
try
{
return new XMLHttpRequest();
}
catch (e){}
}

else if (window.ActiveXObject)
{
try
{
return new ActiveXObject('Msxml2.XMLHTTP');
}
catch (e){}
try
{
return new ActiveXObject('Microsoft.XMLHTTP');
}
catch (e){}
}

return null;
};


Со стороны сервера

$obj_JSON = $_POST['st']            ;
$arr_JSON = json_decode($obj_JSON) ;

echo 'отвечаю '.count($arr_JSON) ;


Массив получается пустой. Почему?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.