我在AJAX
调用时遇到问题。我正在尝试访问HTML
的输入表单元素,并将其写入具有PHP
脚本的数据库。
我的JS
代码看起来像这样。
function getWriteValues() {
var x = document.getElementById("eingabemaske");
var jqxhr = $.post( "source/form_handler.php",
$( "#eingabemaske" ).serialize() );
alert( 'Eintragung erfolgreich durchlaufen' );
}
PHP 部分并不有趣,因为除了数据库插入之外什么都没有发生。
现在谈谈我的问题。该函数使它应该执行的操作。但是当我删除 alert() 语句时,什么也不起作用了。这意味着不会向数据库写入任何内容,并且无法进行 ajax 调用。我无法弄清楚问题出在哪里。我在 2.1.1 版中使用 jQuery。
当您单击提交按钮时,您可以:
- 运行 JS
- 发送 Ajax HTTP 请求
- 提交表格
- 离开当前页面
- 取消 Ajax HTTP 请求,因为不会有任何内容来处理它。
也:
- 阻止提交按钮的默认操作,以便您不会离开页面或
- 摆脱JS并在表单
action
中指定的程序中插入数据库
如果
表单已提交,您是否调用getWriteValues()?如果是这样,请不要忘记返回 false;
- 签入您的html"name"属性是为每个表单元素定义的,或者不是因为serialize()采用元素名称及其值。
- 检查您是否在getWriteValues()中获取值
- 验证这些值是否传递给脚本form_handler.php。
样本:
<form id="eingabemaske">
<input id="abc" name="abc" value="test" />
<input type="button" id="submit" name="submit" value="Submit" />
</form>
<script type="text/javascript">
$(function(){
$('#submit').on('click',function(e){
e.preventDefault();
getWriteValues();
});
});
function getWriteValues() {
console.log($( "#eingabemaske" ).serialize());
var jqxhr = $.post( "form_handler.php",
$( "#eingabemaske" ).serialize() );
//alert( 'Eintragung erfolgreich durchlaufen' );
}
</script>
在 PHP 脚本中
print_r($_REQUEST);
这可能是由于警报消息给 ajax 时间执行其工作。 请检查 Ajax 之前和之后发生的所有过程。此外,当您从提交按钮调用 ajax 时(我想您已经从表单的"onsubmit"属性调用了此函数),可能是它在 ajax 完成之前对表单进行子化。请在函数结束时返回 false,以便进一步停止函数处理。