Ajax序列化;无法在PHP中“读取”变量

时间:2010-11-22 17:07:36

标签: php javascript jquery html ajax

我有这段代码:

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变量。 但是,警报框出现了,但它是空白的。

我认为它与序列化部分有关。

从php回显1或0工作正常,警告框显示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都是......

的函数

5 个答案:

答案 0 :(得分:2)

根据.serialize() documentation

  

注意:只有“成功控制”   序列化为字符串。没有提交   按钮值自序列化   表单未使用按钮提交。   对于表单元素的值   包含在序列化字符串中   element必须具有name属性。   来自文件选择元素的数据不是   序列

你检查了所有这些吗?您是否尝试过警告data_string

答案 1 :(得分:1)

您是否测试了data_string?首先尝试对其进行警报以检查其中是否有数据!

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

答案 2 :(得分:1)

如果您尝试将数据传递给javascript函数,那么为什么不使用jsonhttp://json.org/)来实现此目的,因为它是为了序列化而设计的,并且对于大多数语言有很多选项,所以你不必重新发明轮子。

最终,您可以花时间研究如何使序列化工作,但如果考虑进行更改,您的时间可能会更高效。

答案 3 :(得分:1)

现在似乎有效,我换了:

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

使用:

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

对我很困惑......

答案 4 :(得分:0)

请尝试使用print_r($_POST)查看您的$ _POST变量是否已过帐。