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