jQuery-ajaxHTML表单提交调用未将控制权返回给调用程序



我有一个HTML表单,它被正确地加载到DOM中,并通过jQuery ajax调用与进入DOM的表单一起显示。

我再次将表单数据提交给一个名为jQueryajax的PHP模块。从网络流量中,我可以看到表单数据被正确地发送到了被调用的PHP模块,并且被调用的PHP模块正在回显一个文本响应,但该响应显示在一个空白页面上,并且没有返回到调用脚本。

有人能帮我做错事吗?

在Windows7和localhost/XAMPP/SSL下的jQuery 3.1.1。

我尝试过SO的许多ajax提交方法,但在每种情况下,数据都会正确地发送到被调用的PHP模块,该模块反过来正确地回显一些文本,但在任何情况下,回显的文本都显示在空白页上。

/* attach a submit handler to the form */
$("#contact").submit(function(event) 
{           
/* stop form from submitting normally */
event.preventDefault();
/* get the action attribute from the <form action=""> element */
var $form = $(this),
url = $form.attr('action');
/* Send the data using post */
$.ajax({
url: url,
method: "POST",
data: {message:$('#message').val()}, // received as a $_POST array
dataType: text,
success: function(response)
{
alert(response);
}
})  <!-- end the ajax call -->
})  // end submit function*

简而言之,成功代码永远不会执行,因为数据不会返回给它,即使被调用的程序与我预期的相呼应。

问题是您有一个javascript错误:

未捕获引用错误:文本未定义

此代码:

$.ajax({
type: text,

需要

$.ajax({
type: "text",

由于存在javascript错误,e.preventDefault不会启动,因此表单会进行完整的发布,并在新窗口中显示php输出。

请参阅对此答案的评论:

https://stackoverflow.com/a/19454378/2181514

这是建议的唯一方法,即使存在Javascript错误,也可以阻止页面刷新

(更改为type=button以防止表单发布(

最新更新