Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.08.2012, 13:09
Интересующийся
Отправить личное сообщение для makcstroi Посмотреть профиль Найти все сообщения от makcstroi
 
Регистрация: 19.05.2012
Сообщений: 14

ajax, передача данных методом пост
день добрый, занимаюсь изучением аякс по видеокурсам, списываю код с монитора, по сценарию нужно передать данные в файл addrecord.php методом POST, код следущий:

index.html
<form class="guest" onsubmit="return false">
	<input id = "txtName" type="text" />
	<input id="txtEmail" type="text" />
	<textarea id="txtMessage"></textarea>
	<button onclick="addRecord()">Сохранить</button>
</form>


ajax.js
function Record(author, email, message) {
	this.author = author;
	this.email = email;
	this.message = message;
}

function addRecord() {
	var txtName    = document.getElementById("txtName");
	var txtEmail   = document.getElementById("txtEmail");
	var txtMessage = document.getElementById("txtMessage");
	if (txtName.value == "" || txtEmail.value == "" || txtMessage.value == "") {
		alert("Необходимо заполнить все поля");
		return;
	}
	var record = new Record(txtName.value, txtEmail.value, txtMessage.value);
	var jsonData = JSON.stringify(record);
		
	var req = new XMLHttpRequest();		
	req.open("POST", "addrecord.php", true)	;
	req.setRequestHeader("Content-Type", "text/plain");
	req.setRequestHeader("Content-Length", jsonData.length);
	req.send(jsonData);
}


addrecord.php
<?
    $rawPost = file_get_contents("php://input");  
    header('Content-type: text/plain; charset=utf-8');
    header('Cache-Control: no-store, no-cache');
    header('Expires: ' . date('r')); 

    if ($rawPost) { $record = json_decode($rawPost); }
    else { $rawPost = 'ablom!';}
    echo "this is: ", $rawPost;
?>


в результате после заполнения полей формы и отправки в файле addrecord.php возвращается строчка "this is: ablom". А хотелось, чтобы вывелись введённые в форме данные (для дальнейшей обработки).

помогите найти ошибку. Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 03.08.2012, 13:19
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

makcstroi,
var record = new Record(txtName.value, txtEmail.value, txtMessage.value);
посмотрите record в консоли или
Втавьте после данной строки => alert(record)
Ответить с цитированием
  #3 (permalink)  
Старый 03.08.2012, 14:06
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от makcstroi
var jsonData = JSON.stringify(record);
req.send(jsonData);
Метод send требует данные в виде "<имя_параметра>=<значение_п раметра>", соединённые символом амперсанда ("&")*, а не данные в формате JSON.


* это называется "параметры запроса".

Последний раз редактировалось melky, 03.08.2012 в 14:09.
Ответить с цитированием
  #4 (permalink)  
Старый 03.08.2012, 14:11
Интересующийся
Отправить личное сообщение для makcstroi Посмотреть профиль Найти все сообщения от makcstroi
 
Регистрация: 19.05.2012
Сообщений: 14

console.log(record) выдал:

Record
author: "а"
email: "а"
message: "а"
__proto__: Record

"а" - это я ввёл значения
Ответить с цитированием
  #5 (permalink)  
Старый 03.08.2012, 14:12
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

makcstroi,
Значит см melky,
Ответить с цитированием
  #6 (permalink)  
Старый 03.08.2012, 14:12
Интересующийся
Отправить личное сообщение для makcstroi Посмотреть профиль Найти все сообщения от makcstroi
 
Регистрация: 19.05.2012
Сообщений: 14

alert(record) выдал [object Object]
Ответить с цитированием
  #7 (permalink)  
Старый 03.08.2012, 14:13
Интересующийся
Отправить личное сообщение для makcstroi Посмотреть профиль Найти все сообщения от makcstroi
 
Регистрация: 19.05.2012
Сообщений: 14

& - вроде как апмерсант :-)
Ответить с цитированием
  #8 (permalink)  
Старый 03.08.2012, 14:26
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

makcstroi,http://sciproject.net/2012/01/type-downloads/
Вот вроде нормальная Аякс функция - готовая к использованию ( если не пользовать jQuery Аякс
Ответить с цитированием
  #9 (permalink)  
Старый 03.08.2012, 15:07
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от makcstroi Посмотреть сообщение
& - вроде как апмерсант :-)
https://www.google.ru/search?q=апмерсант
Ответить с цитированием
  #10 (permalink)  
Старый 03.08.2012, 18:27
Профессор
Отправить личное сообщение для tadjik1 Посмотреть профиль Найти все сообщения от tadjik1
 
Регистрация: 07.06.2011
Сообщений: 315

так просто стрингифай надо убрать, нет разве?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ajax чат проблема с записью сообщения в базу данных mysql. Niksik AJAX и COMET 4 15.01.2012 14:04
Передача данных глобальным методом kuzroman AJAX и COMET 1 01.02.2011 10:56
передача в пост checkbox[on/off] в jquery dimiork Элементы интерфейса 5 15.12.2010 22:05
Передача переменной из JS в PHP методом ajax skalka jQuery 7 28.08.2010 12:05
Синхронный запрос данных по AJAX Shasoft AJAX и COMET 2 03.03.2009 14:07