错误:“注意:未定义的索引:”使用Ajax和PHP

时间:2013-03-10 00:05:51

标签: php javascript jquery ajax post

这是我的javascript代码:

$( ".modifica_sore" ).click(function(){
var button = this;
$.ajax({
  type: "POST",
  url: "action/modifica_professori.php",

  data: {               
            nome: $(button).siblings('[name="nome"]').attr("value"),
            cognome: $(button).siblings('[name="cognome"]').attr("value"),
            id: $(button).siblings('[name="id"]').attr("value"),
            modifica_sore: $(button).siblings('[name="modifica_sore"]').attr("value"),
  },
  dataType: "html",

  success: function(msg)
  {
    alert("Aggiunto con successo");
    $("#risultato").html(msg);
  },
  error: function()
  {
    alert("Chiamata fallita, si prega di riprovare...");  callback in caso di fallimento
  }
});
  });

还有我的表格:

echo"<form method='POST'>";
echo"<fieldset>";
echo"<table>";
echo"<tr>";
   echo"<td>Nome</td>";
   echo"<td><input class='nome' name='nome' value='$nome'/></td>";
echo"</tr>";
echo"<tr>";
   echo"<td>Cognome</td>";
   echo"<td><input class='cognome' name='cognome' value='$cognome'/></td>";
echo"</tr>";
echo"<tr>";
   echo"<td></td>";
   echo"<td><input type='hidden' class='id' name='id' value='$id'/></td>";
echo"</tr>";
echo"<tr>";
     echo "<td> <input type='button' name='modifica_sore' class='modifica_sore'  value='Modifica' /> </td>";
    echo "<td> <input type='button' name='modifica_sore' class='modifica_sore' value='Elimina' /> </td>";
echo"</tr>";
echo"</table>";
echo"</fieldset>";
echo"</form>";

如果我不使用Ajax,它可以工作,但是使用Ajax我有这个错误:

Notice: Undefined index: nome in C:\xampp\htdocs\xampp\action\modifica_professori.php on line 8

Notice: Undefined index: cognome in C:\xampp\htdocs\xampp\action\modifica_professori.php on line 9

Notice: Undefined index: id in C:\xampp\htdocs\xampp\action\modifica_professori.php on line 10

Notice: Undefined index: modifica_sore in C:\xampp\htdocs\xampp\action\modifica_professori.php on line 13

Notice: Undefined index: modifica_sore in C:\xampp\htdocs\xampp\action\modifica_professori.php on line 26

在modifica_professori.php中,我使用这些$ _POST var:

$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$id = $_POST['id'];
$_POST['modifica_sore']

但是如果没有Ajax就能正常工作,问题出在javascript ......:/谢谢你的帮助......

2 个答案:

答案 0 :(得分:0)

这是因为.modifica_sore按钮没有<input>个元素,其中"nome""cognome"等名称作为其兄弟姐妹。要获得"nome"的值,您应该使用以下内容:

$(button).closest("table").find('[name="nome"]').val();

答案 1 :(得分:0)

.modifica_sore没有siblings(),因此无法正确提交表单元素值。

我建议在表单中添加id属性,然后使用选择器:

nome: $('#formid input[name="nome"]').attr('value')
cognome: $('#formid input[name="cognome"]').attr('value')
...

在你的ajax数据对象中。

修改

由于您提到无法修改表单,因此您可以尝试将选择器更改为以下内容:

var form = $(button).parents('form');

...
data: {
  nome: form.find('input[name="nome"]').attr('value'),
  cognome: form.find('input[name="cognome"]').attr('value'),
  ...
},
...