Ajax提交表单数据

ajax的基本语法

$.ajax({
    type: "post",  //数据提交方式(post/get)
    url: "demo.php",  //提交到的url
    data: {"key1":"value1","key2":"value2"},//提交的数据
    dataType: "json",//返回的数据类型格式
    success: function(msg){
      //code...返回成功的回调函数
    },
    error:function(msg){
      //code...返回失败的回调函数
    }
});

html端:

<!--要提交的表单-->
<form method="post" action="demo.php" id="formid" >
    <input type="text" name="username" id="username"/>
    <button id="submit" type="submit">submit</button>
</form>
<!--局部更新的区域-->
<div id="display"></div>

php服务端代码demo.php:

<?php
$username = $_POST['username'];
$data = "{username:'$username'}";//组合成json格式数据
echo json_encode($data);//返回json格式数据
?>

html端的script代码:

<script>
    $(document).ready(function(){
        $("#submit").click(function(e){
            e.preventDefault();//阻止默认的表单提交
            username = $("#username").val();//获取表单的输入值
            $.ajax({
                type:"POST",
                url:"demo.php",
                data:{"username":username},//提交到demo.php的数据
                dataType:"json",//回调函数接收数据的格式
                success:function(msg){
                    $("#display").empty();//清空
                    data = eval("("+msg+")");//将返回的json解析成json对象
                    $("#display").html("hello: "+data.username);
                    console.log(msg);
                    console.log(data);
                },
                error:function(msg){
                    console.log("request fail:"+msg);
                }
            });
        });
    });
</script>

结果:
这里写图片描述

控制台console显示的结果:
这里写图片描述
只有转成json对象格式才能才能用.value的形式获取

改进,让php直接返回json对象就无需转换
json_encode()函数能够把数组直接转成json对象
所以,php后端代码改写为:

<?php
echo json_encode($_POST);//返回json对象格式数据
?>

html端ajax代码修改为:

$.ajax({
    type:"POST",
    url:"demo.php",
    data:{"username":username},//提交到demo.php的数据
    dataType:"json",//回调函数接收数据的格式
    success:function(msg){
        $("#display").empty();//清空
        $("#display").html("hello: "+msg.username);
        console.log(msg);
    },
    error:function(msg){
        console.log("request fail:"+msg);
    }
});

这样php后端一句代码搞定,不用自己去构造返回数据的json格式,而且script也不用把json字符串格式转成json对象
再看一下控制台的输出信息:
这里写图片描述


虽然不用再去构造返回数据的json格式,但是ajax请求时发送的表单数据也还要自己去构造。想一想,如果表单数据有一万个输入值,那么自己去构造的话。。。。
解决方法很简单:只需改变$.ajax()内的data:值就行了

data:$('#formid').serialize(),//你的表单id
//或者
data:$('#formid').serializeArray()

用控制台看看这两者的区别(为了更直观,我又加了一个input元素):
这里写图片描述
可以看到.serialize()将表单要提交的内容序列化成一个类似URL的字符串格式,而.serializeArray()则将表单内容序列化为一个json对象的结构


注意:php用includerequire引入前端页面时,两者是在同一个运行代码里,即都是属于主线程的。这时若用该前端页面去ajax请求该php后端脚本代码,会导致请求失败。


参考资料:

AJAX(Asynchronous JavaScript and XML)是一种前端技术,允许在不重新加载整个网页的情况下,与服务器进行异步数据交换。当使用AJAX提交表单数据时,用户的操作(如点击按钮或选择项)可以在后台与服务器进行交互,而页面的其余部分仍保持可见,提供更好的用户体验。 以下是AJAX提交表单数据的基本步骤: 1. 创建XMLHttpRequest对象:这是与服务器通信的核心,JavaScript通过创建一个XMLHttpRequest实例来发起请求。 ```javascript var xhr = new XMLHttpRequest(); ``` 2. 设置请求方法和URL:通常用于POST方法发送表单数据。 ```javascript xhr.open('POST', '/submit-form', true); ``` 3. 配置请求头:如果需要发送JSON数据,可能需要设置`Content-Type`为`application/json`。 ```javascript xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); ``` 4. 发送请求并处理响应:使用`send()`方法发送数据,通常包含表单字段名和值的键值对。 ```javascript xhr.send(formData); ``` 5. 监听回调:定义一个`onreadystatechange`事件处理器,检查`readyState`属性,当状态变为4(表示完成)且状态码为200(成功)时,处理服务器响应。 ```javascript xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { // 处理服务器返回的数据 console.log(xhr.responseText); } }; ``` 6. 错误处理:通常也需要检查`onerror`事件,以处理网络错误或服务器响应异常。 通过这种方式,用户无需刷新页面就能实时获取到服务器的反馈,提升了用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值