Javascript 未定义值ajax JQuery php

Javascript 未定义值ajax JQuery php,javascript,php,jquery,ajax,undefined,Javascript,Php,Jquery,Ajax,Undefined,救命啊! 所有字段的未定义值 function UpdateData(){ var id = $('#id').attr('value'); var name = $('#name').attr('value'); var department = $('#departament').attr('value'); var phone = $('#phone').attr('value'); var mail = $('#mail').attr(

救命啊! 所有字段的未定义值

function UpdateData(){
var id         = $('#id').attr('value');
var name       = $('#name').attr('value');
var department = $('#departament').attr('value'); 
var phone      = $('#phone').attr('value');
var mail       = $('#mail').attr('value');

$.ajax({
    url: 'updatePersonal.php',
    type: "POST",
    data: "submit=&name="+name+"&department="+department+"&phone="+phone+"&mail="+mail+"&id="+id,
    success: function(datos){
        alert(datos);
        consultingData();
        $("#form").hide();
        $("#table").show();
    }
});
return false;}
当我调用该函数时,它不起作用,存储在db中的值对于所有字段都是未定义的,我试图通过在数据上的字符串中添加{}来解决它:->

数据:{submit=&name=+name+&department=+department+&phone=+phone+&mail=+mail+&id=+id}

但如果我这样做,下一部分就不会执行

success: function(datos){
        alert(datos);
        consultingData();
        $("#form").hide();
        $("#table").show();
    }
updatePersonal.php->

<?php
require('functions.php');

if(isset($_POST['submit'])){
    require('clases/personal.class.php');
    $objPersonal = new Personal;

$id             = htmlspecialchars(trim($_POST['id']));
$name           = htmlspecialchars(trim($_POST['name']));
$department     = htmlspecialchars(trim($_POST['department']));
$phone          = htmlspecialchars(trim($_POST['phone']));
$mail           = htmlspecialchars(trim($_POST['mail']));


if ($objPersonal->actualizar(array($name,$department,$phone,$mail),$id) == true){
    echo 'Saved';
}else{
    echo 'There was an error...';
}
}else{
if(isset($_GET['id'])){

    require('clases/personal.class.php');
    $objPersonal = new Personal;
    $consult     = $objPersonal->show_person($_GET['id']);
    $personal    = mysql_fetch_array($consult);


  ?>
<form method="post" action="updatePersonal.php" onsubmit="UpdateData(); return false">
    <input type="hidden" name="id" id="id" value="<?php echo $personal['id']?>" />
    <p>
    <label>Name<br />
    <input class="text" type="text" name="name" id="name" value="<?php echo $personal['name']?>" />
    </label>
    </p>
    <p>
    <label>Department<br />
    <input class="text" type="text" name="department" id="department" value="<?php echo $personal['department']?>" />
    </label>
    </p>
    <p>
    <label>Phone<br />
    <input class="text" type="text" name="phone" id="phone" value="<?php echo $personal['phone']?>" />
    </label>
    </p>
    <p>
    <label>Mail<br />
    <input class="text" type="text" name="mail" id="mail" value="<?php echo $personal['mail']?>" />
    </label>
    </p>
    <p>
    <input type="submit" name="submit" id="button" value="Send" />
    <label></label>
    <input type="button" name="cancel" id="cancel" value="Cancel" onclick="Cancel()" />
    </p>
</form>
<?php
    }
}
?>
您的数据应为JSON格式:

{提交:,姓名:姓名,部门:部门}


依此类推..

首先,确保正确填充变量,可能在初始化后使用简单的alertvarname。。。我怀疑他们没有被设置

然后我建议尝试如下分配值:

var id         = $('#id').val();
var name       = $('#name').val();
var department = $('#departament').val(); 
var phone      = $('#phone').val();
var mail       = $('#mail').val();
使用val函数而不是attr,并以JSON格式写入参数,如下所示:

function UpdateData(){
    var id         = $('#id').val();
    var name       = $('#name').val();
    var department = $('#departament').val(); 
    var phone      = $('#phone').val();
    var mail       = $('#mail').val();

    $.ajax({
        url: 'updatePersonal.php',
        type: "POST",
        data: {
            id: id,
            name: name,
            department: department,
            phone: phone,
            mail: mail
        }
    }).done(function(datos){
        alert(datos);
        consultingData();
        $("#form").hide();
        $("#table").show();
    });
    return false;
}
不要为每个输入字段提取值并在数据对象内使用JSON格式,而是使用$'form'。像这样序列化

在updatePersonal.php页面上,$_POST['param']将根据输入字段的name属性。例如,对于电话输入字段,如果名称属性值等于电话,则可能是$u POST['phone']


在询问任何问题之前,请在此处搜索相关问题。

您指的是datos,不是吗?我已经尝试过了,但问题仍然存在!当我这样做时,值正确地保存在数据库中,但是success:函数不起作用,希望您能帮助我!在传递给$.ajax的JSON对象中,有一个数据属性。这也是一个JSON对象。请尝试添加完整的回调和错误回调以及成功的回调。请求可能有错误代码。显示您的updatePersonal.php文件…ProTip:Use.val而不是.attr'value。数据:{submit=&name=+name+&department=+department+&phone=+phone+&mail=+mail+&id=+id}不是有效的JavaScript语法。我只是编辑问题中的代码,以便您可以看到updatePersonal.php,另外,我只是更改了.val,我不知道{}会导致无效语法,很抱歉我使用了.val;以及一些用于检查变量是否已填充的警报,它们都已设置
function UpdateData(){
    $.ajax({
        url: 'updatePersonal.php',
        type: "POST",
        data: $('#form').serialize()
    }).done(function(datos){
        alert(datos);
        consultingData();
        $("#form").hide();
        $("#table").show();
    });
    return false;
}