当前位置: 首页 > 面试题库 >

JavaScript发布请求,例如表单提交

方权
2023-03-14
问题内容

我正在尝试将浏览器定向到其他页面。如果我想要GET请求,我可能会说

document.location.href = 'http://example.com/q=a';

但是,除非使用POST请求,否则我尝试访问的资源将无法正确响应。如果不是动态生成的,我可能会使用HTML

<form action="http://example.com/" method="POST">
  <input type="hidden" name="q" value="a">
</form>

然后,我只需从DOM提交表单。

但是我真的很想让我说的JavaScript代码

post_to_url('http://example.com/', {'q':'a'});

最好的跨浏览器实现是什么?

编辑

对不起,我不清楚。我需要一个更改浏览器位置的解决方案,就像提交表单一样。如果XMLHttpRequest可以做到这一点,那不是很明显。而且这不应该是异步的,也不应该使用XML,因此Ajax并不是答案。


问题答案:

动态创建<input>表单并提交

/**
 * sends a request to the specified url from a form. this will change the window location.
 * @param {string} path the path to send the post request to
 * @param {object} params the paramiters to add to the url
 * @param {string} [method=post] the method to use on the form
 */

function post(path, params, method='post') {

  // The rest of this code assumes you are not using a library.
  // It can be made less wordy if you use one.
  const form = document.createElement('form');
  form.method = method;
  form.action = path;

  for (const key in params) {
    if (params.hasOwnProperty(key)) {
      const hiddenField = document.createElement('input');
      hiddenField.type = 'hidden';
      hiddenField.name = key;
      hiddenField.value = params[key];

      form.appendChild(hiddenField);
    }
  }

  document.body.appendChild(form);
  form.submit();
}

例:

post('/contact/', {name: 'Johnny Bravo'});

编辑 :既然已经被大肆抨击了,我猜人们会大量复制粘贴。因此,我添加了hasOwnProperty检查以修复所有无意的错误。



 类似资料:
  • 我有一个本地运行的服务器,它有一个内置的rest api。要通过这个api登录,我们需要将用户名,密码和组织作为参数发送到urllocalhost:8090/ehr/api/v1/login通过POST方法和服务器返回一个auth令牌作为响应。当我尝试直接这样做时,无需用户通过以下代码从表单输入: 它工作得非常好,auth token作为json返回,但如果我尝试通过以下代码通过用户表单输入执行相

  • 问题内容: 我正在尝试使用Python和请求库登录网站以进行某些抓取,但我正在尝试以下操作(无效): 但是,nada,重定向到登录页面。我需要打开一个会话吗?我执行了错误的POST请求,是否需要加载cookie?还是会话会自动执行?我在这里迷路了,需要一些帮助和解释。 我要登录的网站是php,我是否需要“捕获set- cookie并设置cookie标头”?如果是这样,我不知道该怎么做。该网页是具有

  • 当我在symfony4中提交json http post请求时,requesthandling不会提交我的表单。 我尝试将“方法”选项设置为要发布的表单,但似乎没有帮助。我将application/json头用于Content-type和Accept。 表格: 控制器: 还有我的http帖子: 标头:内容类型:应用程序/json接受:应用程序/json 正文:{“用户名”:“dunglas”} 我

  • 问题内容: 我有一个关于单例bean如何详细处理并发请求的问题。 我想要有关单例bean如何处理并发请求以及系统处理器如何看到这些请求的完整详细信息。 我已经研究了有关在线处理系统处理器中并发请求的问题。他们说处理器本身有一个调度程序,调度程序将决定处理哪个请求。 好的。如果假设我有多个核心处理器,那么调度程序如何处理并发请求? 谁能向我解释有关单例bean如何为JVM和系统中的并发请求提供服务的

  • 请帮助我在JMeter中以正确的方式发送表单数据post请求。

  • 问题内容: 我正在尝试从HTML中读取发布请求参数。我可以使用JavaScript中的以下代码读取get请求参数。 但这不适用于发布请求。谁能告诉我如何使用JavaScript读取HTML中的发布请求参数值? 问题答案: POST数据是在服务器端处理的数据 。Javascript位于客户端。因此,您无法使用JavaScript读取帖子数据。