管理表单数据+通过ajax发送到php的其他变量

时间:2016-09-01 14:41:44

标签: javascript php jquery

我的问题可能很基本,但问题是:

我有一个javascript函数,它通过ajax发送一个数组来处理一些信息......

  var second = $('form.contact').serialize();
  var arry = {keystatus: varId, keyname: second}

在php中,我添加了通过ajax发送的数据并编写了一个echo来查看ajax成功,通过console.log显示。

我能得到什么:

enter image description here

我的php脚本:

$name = strip_tags($_POST['keystatus']);
$email = strip_tags($_POST['keyname']);

$teste['nome'] = $name;
$teste['email'] = $email;

echo json_encode($teste);

我需要找到一种方法来分开,例如:

$_POST['keyname']['nome'] -> (in this example) discovery
$_POST['keyname']['email'] -> discovery@discovery.com
$_POST['keyname']['usuario'] -> discovery

1 个答案:

答案 0 :(得分:1)

您当前正在将表单数据作为序列化字符串添加到您发送的对象中。这就是它看起来如此的原因。

您可以使用所有数据构建新对象,并使用ajax发送该对象:

var data = {
    keystatus: varId,
    keyname: {
        nome: $("#the_nome_input").val(),
        email: $("#the_email_input").val(),
        usuario: $("#the_usuario_input").val()
    }
};

或者你可以在表单中添加额外的值(因为它似乎只是一个)作为隐藏的输入字段:

// Add this to the form
<input type="hidden" value="" name="keystatus" id="keystatus" />


// In your js, add
$("#keystatus").val(varId); // Sets the value
var data = $("form.contact").serialize();

...现在您可以使用ajax将数据发送到您的后端。

如果您想获取这样的数据:$_POST['keyname']['nome']并使用第二种选择,则需要将输入字段重命名为:name="keyname[nome]"name="keyname[email]"和{{1} }。

这将为您提供正确的数据结构和值。