我有一个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
以防止表单发布(