Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Prototype + JSON + AJAX, Не получается отослать данные на сервер 
V
    Опции темы
FiMa1
Дата 12.7.2009, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: нет
Всего: 6



Ребята, привет всем.

Пытаюсь разобраться с использованием означенных библиотек. На начальном этапе нужно просто отослать объект foo на сервер с помощью JSON и разобрать полученные данные на сервере.
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Test</title>
<script type="text/javascript" src="prototype.js"></script>
</head>
<body>

<input type="button" onClick="func();" value="Press"/>

<script type="text/javascript">
function func() {
    new Ajax.Request(
        'handler.php',
        {method: 'post',
        requestHeaders: {Accept: 'application/json'},
        parameters: {"foo":Object.toJSON( {num:0,str:"qwe"} ) },
        onSuccess: function() { alert(request.responseText); } }
    )
}
</script>
</body>
</html>

handler.php (не может разобрать полученный JSON, возвращает null)
Код

<?php
if(isset($_REQUEST['foo'])) {
    $obj = json_decode($_REQUEST['foo']);
    if($obj) {
        print $obj;
    } else {
        print "null";
    }
} else {
    print "error";
}
?>

Подозреваю, что напутал что-нибудь с parameters, не пойму что именно.
Подскажите, пожалуйста, как правильно нужно сделать. Заранее спасибо.

Это сообщение отредактировал(а) FiMa1 - 13.7.2009, 19:27
PM   Вверх
FiMa1
Дата 13.7.2009, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 23.9.2006

Репутация: нет
Всего: 6



Методом научного тыка добился ожидаемого результата. Решение вот такое:
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Test</title>
<script type="text/javascript" src="prototype.js"></script>
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
</head>

<input type="button" onClick="func();" />

<script type="text/javascript">

function func() {
    new Ajax.Request(
        'handler.php',
        {method: 'post',
        requestHeaders: {Accept: 'application/json'},
        parameters: {foo:Object.toJSON( {num: 0,str: "string"} )},
        onSuccess: function() { alert(request.responseText); } }
    )
}
</script>

</body>
</html>

Код

<?php
if(isset($_REQUEST['foo'])) {
    // foo в строке json приходил в виде: {\"num\": 0, \"str\": \"string\"}
    $obj = json_decode(str_replace("\\", "", $_REQUEST['foo']));
    if($obj) {
        print $obj->str;
    } else {
        print "null";
    }
} else {
    print "error";
}
?>

Так как magic quotes были включены (get_magic_quotes_gpc () = 1) необходимо их отключить (например через php.ini), либо удалить backslashes из $_POST, $_GET, $_REQUEST.

Это сообщение отредактировал(а) FiMa1 - 13.7.2009, 22:35
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0382 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.