Ajax serialize; Cant 'read' переменные в PHP

У меня есть этот код:

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 …

Related of "Ajax serialize; Cant 'read' переменные в PHP"

Вы протестировали 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 размещены в конце концов.