表单ajax提交数据到php文件
表单ajax提交数据到php文件
这个问题已经有了答案:
嗨,我正在尝试使用ajax创建表单。但是在将表单变量发送到php文件时遇到了一些问题。我收到错误消息:未定义的索引:name。
我检查了Chrome开发工具,我看到变量已经发送。但是当我使用echo json_encode时,我在php文件中看到的是一个空数组。所以我不知道自己犯了什么错误。
文件Main.js
var name = $('#user_name').val(); var lname = $('#user_lastname').val(); function formLogin(name, lname) { $.ajax({ url: 'database/register.php', data: { 'name' : name, 'lname' : lname }, type: 'post', dataType:'json', success: function(data) { alert(data); } }); }
Html表单:
Php代码:
$dane = $_POST;
echo json_encode($dane);
Chrome开发工具:
我只想知道如何在php文件register.php中输出这些变量(name,lname)
使用serialize的版本:
function formLogin() { var dane = $('form').serialize(); $.ajax({ url: 'database/register.php', data: {'dane': dane}, method: 'post', success: function(data) { console.log(data); } }); }
然后结果控制台:
D:\xampp\htdocs\szkola\database\register.php:8: array (size=1) 'dane' => string '' (length=0)
jquery-3.2.1.min.js:4 XHR finished loading: POST "http://localhost/szkola/database/register.php".
但是当我转到http://localhost/szkola/database/register.php
我得到了这个:
D:\\xampp\\htdocs\\szkola\\database\\register.php:8:
array (size=0)
empty
admin 更改状态以发布 2023年5月24日
尝试使用method
代替type
。
HTML代码:
JavaScript代码:
function formLogin() { // Serialize the form var data = $('form').serialize(); // Ajax call $.ajax({ url: 'database/register.php', data: data, method: 'post', dataType: 'json', success: function(data) { console.log(data); } }); }
同时记得你正在请求JSON,所以你必须在你的PHP文件中使用json_encode($array)
输出,以便返回一个简单的字符串。
您需要改变在Javascript中定义变量的方式,并在函数内部声明它们,而不是在外部:
function formLogin(){ var name = $('#user_name').val(); var lname = $('#user_lastname').val(); $.ajax({ url: 'database/register.php', data: { 'name' : name, 'lname' : lname }, type: 'post', dataType:'json', success: function(data) { alert(data); } }); }
并且您需要以同样的方式更新您的HTML(使用formLogin()
而不是formLogin(...,...)
):