我在通过AJAX发布数据时遇到了一些麻烦。我创建了一个小的保存脚本,用于确定POST必须保存在哪个表中(我为每个表使用不同的表单):
$(function()
{
$( "#tabs" ).tabs().find( ".ui-tabs-nav" ).sortable({ axis: "x" });
});
function save(target)
{
switch(target)
{
case "praktijk":
$.ajax({ url: 'webscripts/admin/opslaan.php?type=praktijk',
type: 'POST',
data: $("#tabs-2").find('form').serialize(),
success: function(){
alert("gegevens opgeslagen!");
$('#popup').dialog('close');
}
});
break;
case "persoonlijk":
$.ajax({
url: 'webscripts/admin/opslaan.php?type=persoonlijk',
type: 'POST',
data: $("#tabs-1").find('form').serialize(),
success: function(){
alert("gegevens opgeslagen!");
$('#popup').dialog('close');
}
});
break;
case "vragen":
$.ajax({
url: 'webscripts/admin/opslaan.php?type=vragen',
type: 'POST',
data: $('#tabs-3').find('form').serialize(),
success: function(){
alert("gegevens opgeslagen!");
$('#popup').dialog('close');
}
});
break;
}
}
正如您所看到的,我接下来通过使用GET变量来确定PHP脚本,该变量说明了将其保存到哪个表中。但这不起作用。此时脚本似乎崩溃了。我不知道它到底崩溃了什么.. Firebug终端没有显示任何明显的错误。
有人知道它为什么不起作用吗?
答案 0 :(得分:1)
首先,如果您为每个表使用不同的表单,为什么不使用表单本身发送正确的表名('persoonlijk','vragen'等)?
示例:
<form ...>
<input type="hidden" name="target" value="persoonlijk" />
...
</form>
在php中:
<?php
if($_POST['target'] == 'persoonlijk') {
// save in table 'persoonlijk'
} else {
// save it somewhere else
}
?>
此外,读取php var不能破坏你的javascript,只是因为你在服务器上工作,而javascript在浏览器中工作。请使用print_r($_GET);
打印出来的邮件变量,然后解释“似乎中断”意味着什么(会发生什么,你看到了什么(错误信息等))。
答案 1 :(得分:1)
data:
应该包含一些数据。它应该是文本或值,并且您的代码似乎没有正确设置它。我建议你在那里使用一些var
。