У меня есть этот код:
var data_string = $('form#frm').serialize(); $.ajax({ type: "POST", url: "/send.php", data: data_string, success: function(data) { alert(data);
И в php-файле:
$to = mysql_real_escape_string($_POST['email']); //email $name = mysql_real_escape_string($_POST['name']); //name of tipper $msg = mysql_real_escape_string($_POST['msg']); //message echo $name; //EXAMPLE
Вышеуказанное предупреждение в коде ajax СЛЕДУЕТ предупредить опубликованную переменную $name
. Однако появляется предупреждающее сообщение, но оно пустое.
Я думаю, что это связано с сериализацией.
эхо 1 или 0 из php работает нормально, а в поле предупреждения отображается 1 или 0.
Какие-нибудь идеи в чем-то не так?
благодаря
РЕДАКТИРОВАТЬ:
Выяснилось, что при предупреждении сериализованных данных:
alert (data_string);
Я получаю «неопределенный» …
И вот форма:
<form name='frm' id='frm' action='send.php' method='post' onsubmit='tip_func(); return false;'> <input type='text' name='name' id='name'>
tip_func () – это функция, в которой все указанные выше значения ajax …
Вы протестировали data_string
? Сначала попробуйте сделать предупреждение, чтобы проверить наличие в нем данных!
var data_string = $('#frm').serialize(); alert(data_string);
Согласно документации .serialize()
:
Примечание. Только строки «успешный контроль» сериализуются в строку. Значение кнопки отправки не сериализуется, так как форма не была отправлена с помощью кнопки. Чтобы значение элемента формы было включено в сериализованную строку, элемент должен иметь атрибут имени. Данные из элементов выбора файлов не сериализованы.
Вы все это проверили? Вы пытались предупредить data_string
?
Если вы пытаетесь передать данные в функцию javascript, то почему бы просто не использовать json
( http://json.org/ ) для этого, поскольку он предназначен для сериализации и существует множество вариантов для большинства языков, поэтому вы не придется изобретать велосипед.
В конечном итоге вы можете потратить время на то, как заставить сериализовать работу, но ваше время может быть более продуктивным, если вы подумаете о внесении изменений.
Кажется, это работает сейчас, я заменил:
var data_string = $('form#frm').serialize();
С:
var form = document.getElementById('frm'); var data_string = form.serialize();
Очень смущает меня …
Попробуйте print_r($_POST)
вместо этого, чтобы узнать, если ваши $ _POST vars размещены в конце концов.