javascript怎么做表单提交?

我的项目没有使用前后分离, 用的是模板;
很多情况不会在html里写form;
这种情况怎么在javascript中提交数据? 现在一直是用get方式不断拼参数;
另外, put和delete该怎么发起呢?


补充:
不好意思, 我说漏了, 不是用异步方式提交, 而是像表单提交那样, 提交后页面重新加载

阅读 4k
3 个回答

js中通过ajax post调用post 方式的API 传值,同理delete,put

表单就是 application/x-www-urlencoded类型的字符串

var xhr = new XMLHttpRequest();
xhr.open('/api','POST',true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.onload = function(){console.log(xhr.responseText)};
xhr.send('username=aaa&age=10');

put 和POST差不多,xhr.open那里改一下为PUT

delete和get差不多,xhr.open那里改一下为DELETE

我的理解是你要传递通过 Ajax 的方式将表单里的数据传到后台。
提交数据的方式主要有 application/x-www-urlencodedapplication/jsonmultipart/form-data 这几种。

// application/x-www-urlencoded
let xhr = new XMLHttpRequest();
xhr.open(METHOD, URL);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send(QUERY_STRING); // "name=jasonxia23&password=123"
xhr.onload = () => {
    const res = JSON.parse(xhr.response);
    // todo
};
// application/json
let xhr = new XMLHttpRequest();
xhr.open(METHOD, URL);
xhr.setRequestHeader('Content-type', 'application/json');
xhr.send(JSON_STYLE_STRING); // "{"name":"jasonxia23","password":123}"
xhr.onload = () => {
    const res = JSON.parse(xhr.response);
    // todo
};
// multipart/form-data
let xhr = new XMLHttpRequest();
let formData = new FormData();
formData.append(KEY, VALUE);
xhr.open(METHOD, URL);
xhr.setRequestHeader('Content-type', 'multipart/form-data');
xhr.send(formData);
xhr.onload = () => {
    const res = JSON.parse(xhr.response);
    // todo
};
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题