Ajax сериализуется;Не могу читать переменные в PHP - PullRequest
3 голосов
/ 22 ноября 2010

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

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);

Я получаю "undefined" ...

И вот форма:

<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 есть ...

Ответы [ 5 ]

2 голосов
/ 22 ноября 2010

Согласно документации .serialize() :

Примечание. Только "успешные элементы управления" сериализовано в строку. Нет отправки значение кнопки сериализуется, так как форма не была отправлена ​​с помощью кнопки. Чтобы значение элемента формы было включены в сериализованную строку, элемент должен иметь атрибут name. Данные из файла выбора элементов не сериализованная.

Вы проверяли все это? Вы пробовали оповещать data_string?

1 голос
/ 22 ноября 2010

Кажется, теперь это работает, я заменил:

var data_string = $('form#frm').serialize();

На:

var form = document.getElementById('frm');
var data_string = form.serialize();

Очень смущает меня ...

1 голос
/ 22 ноября 2010

Если вы пытаетесь передать данные в функцию javascript, то почему бы просто не использовать для этого json (http://json.org/)), так как он предназначен для сериализации и для большинства языков существует множество вариантов, поэтому не нужно изобретать велосипед.

В конечном итоге вы можете потратить время на то, чтобы заставить сериализацию работать, но ваше время может быть более продуктивным, если вы подумаете о внесении изменений.

1 голос
/ 22 ноября 2010

Вы тестировали data_string?Попробуйте сначала сделать предупреждение, чтобы убедиться, что в нем есть данные!

var data_string = $('#frm').serialize();
alert(data_string);
0 голосов
/ 22 ноября 2010

Вместо этого попробуйте print_r($_POST), чтобы увидеть, все ли ваши переменные $ _POST опубликованы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...