这是我的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 ......:/谢谢你的帮助......
答案 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'),
...
},
...