使用jQueryAjax向PHP提交表单时,返回的数据为空
当我运行下面的代码时,返回的“数据”是一个空字符串“[]”。(至少通过Chrome控制台查看器查看) 如果我注释掉JS中的“event.preventDefault();”行,我会得到一个页面重新加载,正如预期的那样,以及一个JSON字符串,其结果通过JSONLint。我知道PHP正在工作,因为我正在将新插入到mySQL数据库中,返回值是有意义的 即使“数据”返回为空,一切似乎都正常运行。。。(也就是说,我得到的是第一秒和第二秒的console.log,后跟空字符串。)我就是无法在JS上下文中得到返回的“data”值 我对网络开发有点陌生,不是编程。。。但是有人发现新手犯的错误吗?我已经阅读了大约12个类似的问题,并尝试了很多东西,但没有任何帮助 提前谢谢使用jQueryAjax向PHP提交表单时,返回的数据为空,php,jquery,ajax,forms,preventdefault,Php,Jquery,Ajax,Forms,Preventdefault,当我运行下面的代码时,返回的“数据”是一个空字符串“[]”。(至少通过Chrome控制台查看器查看) 如果我注释掉JS中的“event.preventDefault();”行,我会得到一个页面重新加载,正如预期的那样,以及一个JSON字符串,其结果通过JSONLint。我知道PHP正在工作,因为我正在将新插入到mySQL数据库中,返回值是有意义的 即使“数据”返回为空,一切似乎都正常运行。。。(也就是说,我得到的是第一秒和第二秒的console.log,后跟空字符串。)我就是无法在JS上下文中得
$(文档).ready(函数(){
$('form')。提交(函数(事件){
var formData={
'firstName':$('input[name=firstName]')。val(),
'lastName':$('input[name=lastName]')。val(),
'email':$('input[name=email]')。val(),
'password':$('input[name=password]')。val()
};
$.ajax({
键入:“POST”,
url:'createaccount.php',
数据:formData,
数据类型:“json”
})
.完成(功能(数据){
控制台日志(“第二”);
控制台日志(数据);
});
控制台日志(“第一”);
event.preventDefault();
});
});代码>
输入{
边界半径:5px;
边框宽度:1px;
保证金:2倍;
}
加入网站
名字:
姓氏:
电子邮件:
密码:
在对表单数据执行任何操作之前,PHP代码会检查是否设置了$\u POST['submit']
,但您从未在formData
中设置它。尝试:
var formData = {
'firstName': $('input[name=firstName]').val(),
'lastName': $('input[name=lastName]').val(),
'email': $('input[name=email]').val(),
'password': $('input[name=password]').val(),
'submit': 'on'
};
Ajax有一个名为succes
的选项。它将在ajax调用返回正输入时立即执行。将done
中的项目放在那里。我认为您不能在ajax调用之外调用数据线,因为您就是这么做的代码>php代码现在就在那里。@Indrasinh Bihola我放了一个formData的console.log,它被正确填充了。请求到达PHP,并进入数据库。我只是没有将响应文本返回到数据变量中。@Dorvalla我已经尝试了.done(函数(数据))和success:function(数据,我没有从数据中获取信息。但他说他正在获取插入。我不相信他。如果他不添加该字段,则该if
中的任何代码都不会被执行。@Barmar非常感谢你查看我的断言。我对成功项中没有数据有问题。当你唱html文章,因为它确实被填写。我错误地认为它也是通过ajax进入的。嗯……计算机完全按照你告诉它的做。我假设的插入在我返回html表单文章时起作用,而不是ajax。如果我能给你两张绿色支票,我会的。谢谢你。