【问题标题】:Ajax serialize; Cant 'read' variables in PHPAjax 序列化;无法在 PHP 中“读取”变量
【发布时间】:2010-11-22 17:07:35
【问题描述】:

我有这个代码:

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 变量。 然而,alertbox 出现了,但它是空白的。

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

从 php 回显 1 或 0 可以正常工作,并且警告框显示 1 或 0。

有什么想法吗?

谢谢

编辑:

在alert序列化数据的时候发现:

 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所在的函数...

【问题讨论】:

  • 序列化后的数据是什么样的?
  • 你能发布一些 HTML 表单示例吗?
  • @Camran - 在您的表单 html 中,您需要将
  • @Camran - 你在调用 mysql_real_escape_string 之前执行 mysql_connect 吗?
  • 我不明白为什么警报框返回未定义。它没有找到表格。我确定名字和一切都是正确的。

标签: php javascript jquery html ajax


【解决方案1】:

根据.serialize()documentation

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

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

【讨论】:

    【解决方案2】:

    您是否测试过data_string?尝试先对其发出警报,以检查其中是否有数据!

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

    【讨论】:

    • 这不能回答问题。
    • 这不是解决方案,这应该是添加到问题的评论
    【解决方案3】:

    如果您尝试将数据传递给 javascript 函数,那么为什么不直接使用 json (http://json.org/),因为它是为序列化而设计的,并且大多数语言都有很多选项,所以您不需要必须重新发明轮子。

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

    【讨论】:

      【解决方案4】:

      现在好像可以了,我换了:

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

      与:

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

      让我很困惑......

      【讨论】:

      • 很奇怪。当我测试时,两者都对我有用。好吧,至少你让它工作了!
      【解决方案5】:

      试试print_r($_POST),看看你的 $_POST 变量是否已经发布。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-21
        • 1970-01-01
        • 2012-01-12
        • 2015-04-26
        • 1970-01-01
        • 2015-12-29
        相关资源
        最近更新 更多