javascript — неопределенное значение ajax переполнение стека JQuery

ПОМОГИТЕ!
Неопределенные значения для всех полей

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

Решение

Ваш data должен быть в формате JSON:

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

и так далее..

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() функция вместо 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').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,

Поиск соответствующих вопросов здесь, прежде чем задавать любой вопрос.

0
По вопросам рекламы [email protected]