基于基础域名相同的情况,ajax跨域表单提交的方法可以通过以下步骤实现:
- 在服务端设置允许跨域访问
首先,在服务端需要设置响应头允许跨域访问,可以使用以下代码:
// Nodejs可用的代码
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
- 使用xhr对象发送请求
在前端使用ajax请求时,需要使用XMLHttpRequest对象(xhr)来发送请求。在发送请求前,设置xhr对象的一些属性和回调函数。示例代码如下:
const xhr = new XMLHttpRequest();
xhr.open("POST", "http://example.com/api", true); // 设置请求方式、请求地址和是否异步
xhr.setRequestHeader("Content-Type", "application/json;charset=utf-8"); // 设置请求头
xhr.onreadystatechange = function() { // 监听状态改变
if (this.readyState === 4 && this.status === 200) { // xhr对象状态和响应码符合条件
const res = JSON.parse(this.responseText); // 获取响应的数据
console.log(res);
}
};
const formData = new FormData(); // 创建FormData对象
formData.append("username", "admin"); // 设置表单数据
formData.append("password", "123456");
xhr.send(formData); // 发送请求
在上述代码中,我们使用了post方式发送请求,设置了请求头和异步执行。FormData对象是用来存储表单数据的,通过.append()方法像其中添加表单数据。
- 接收服务端的响应
在xhr对象的回调函数中,我们通过对xhr对象状态和响应码的判断,确定接收到了服务端的响应。可以通过xhr.responseText或xhr.responseXML获取响应的数据。
- 示例说明
通过一个示例理解以上的过程。
现在有两个站点分别为:
http://localhost:8888 # 前端站点
http://localhost:9999 # 后端站点
前端站点要向后端站点提交表单数据,代码实现如下:
const xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:9999/api", true);
xhr.setRequestHeader("Content-Type", "application/json;charset=utf-8");
xhr.onreadystatechange = function() {
if (this.readyState === 4 && this.status === 200) {
const res = JSON.parse(this.responseText);
console.log(res);
}
};
const formData = new FormData();
formData.append("username", "admin");
formData.append("password", "123456");
xhr.send(formData);
在后端站点的服务端代码中,需要配置允许跨域访问。在Nodejs中,可以通过以下代码实现:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "http://localhost:8888");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.post('/api', function(req, res) {
const username = req.body.name;
const password = req.body.password;
res.json({status: 'success'});
});
在上述代码中,我们通过设置响应头,允许前端站点(http://localhost:8888)跨域访问。接着,我们在服务端的api路由中,获取前端提交的表单数据,在响应中返回一个json格式的状态信息。
以上就是完整的ajax跨域(基础域名相同)表单提交的方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ajax跨域(基础域名相同)表单提交的方法 - Python技术站