我在通过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终端没有显示任何明显的错误。
有人知道为什么它不起作用吗?
首先,如果您为每个表使用不同的表单,为什么不将正确的表名('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);
打印出get-en-post变量,然后解释"似乎中断"的含义(发生了什么,你看到了什么(错误消息等))。
data:
应该包含一些数据。它应该是一个文本或值,而您的代码似乎没有正确设置它。我建议你在那里使用一些var
。