2014-09-22 31 views
0

幫助!所有字段未定義的值ajax JQuery php

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

當我調用該函數不起作用 不定值,存儲在數據庫中的值是不確定的各個領域,我試圖解決它通過添加{}對數據串: - >

data: {"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 
    } 
} 
?> 
+0

向我們展示您的'updatePersonal.php'文件... – algorhythm 2014-09-22 19:47:15

+0

ProTip:使用.val()而不是'.attr('value')'。 – 2014-09-22 19:57:55

+0

data:{「submit =&name =」+ name +「&department =」+ department +「&phone =」+ phone +「&mail =」+ mail +「&id =」+ id}'是無效的JavaScript語法。 – 2014-09-22 19:58:29

回答

0

data應該是JSON格式:

{"submit": "", "name": name, "department": department}

等..

+0

你的意思是數據',不是嗎? – algorhythm 2014-09-22 19:31:09

+0

我試過了,但問題仍然存在! 當我這樣做的價值正確地保存在分貝,但成功:功能不起作用 希望你能幫助我! – iGimm 2014-09-22 19:33:20

+0

在傳遞給'$ .ajax'的JSON對象中,您有'data'屬性。這也是一個JSON對象。 – Lian 2014-09-22 19:34:52

0

首先,確保你的變量被正確填充,也許初始化後使用簡單的alert(varname) ...我懷疑它們沒有被設置。

然後,我會建議嘗試這樣分配的值:

var id   = $('#id').val(); 
var name  = $('#name').val(); 
var department = $('#departament').val(); 
var phone  = $('#phone').val(); 
var mail  = $('#mail').val(); 
+0

我用.val();和一些警報來檢查變量是否被填充,它們都被設置 – iGimm 2014-09-22 20:12:13

0

使用val()函數,而不是attr()和JSON格式write參數,像這樣:

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').serialize()像這樣使用

function UpdateData(){ 
    $.ajax({ 
     url: 'updatePersonal.php', 
     type: "POST", 
     data: $('#form').serialize() 
    }).done(function(datos){ 
     alert(datos); 
     consultingData(); 
     $("#form").hide(); 
     $("#table").show(); 
    }); 
    return false; 
} 

updatePersonal.php$_POST['param']將根據name屬性的輸入字段。例如。對於phone輸入字段,它可能是$_POST['phone']如果name屬性值將等於phone

在提出任何問題之前,請在此處搜索相關問題。