44

是否可以从 JavaScript 检测页面的 HTTP 请求方法(例如 GET 或 POST)?如果是这样,怎么做?

4

7 回答 7

34

一句话—​​—没有

于 2008-09-23T14:11:14.807 回答
21

我不相信。如果您需要此信息,我建议您包含<meta>在服务器上生成的元素,您可以使用 JavaScript 检查该元素。

例如,使用 PHP:

<meta id="request-method" name="request-method" content="<?php echo htmlentities($_SERVER['REQUEST_METHOD']); ?>">
<script type="text/javascript">
    alert(document.getElementById("request-method").content);
</script>
于 2008-09-23T14:21:38.447 回答
10

您可以检查页面的引荐来源网址:

document.referrer == document.URL

如果它是同一页面,则用户很可能提交了表单。

当然这需要

  • 你不会从一个页面链接到它本身(无论如何这是可访问性所必需的)
  • 表单提交到它所在的同一个页面
  • 用户没有禁用引荐来源网址
于 2011-07-20T10:27:58.663 回答
9

如果您需要此功能,请让服务器检测所使用的方法,然后修改 DOM 中的某些内容,以便稍后读取。

于 2008-09-23T14:20:50.337 回答
1

您不能为普通的 post/get 执行此操作,但是如果您使用 xmlhttp 调用并使用 getResponseHeader,则可以获取此信息

于 2008-09-23T14:11:36.880 回答
0

不。

JS 是一种客户端编程语言,这意味着一切都是客户端。但是,您可以使用 PHP 或任何服务器端语言来执行此操作。

如果您要使用 php,以下是一个示例:

<?php 
  $foo = $_POST["fooRequest"]; # The actual response.

  # do something with the foo variable like:
  # echo "Response got: " + $foo;
?>

然后添加一些 HTML:

 <form action="test.php" method="post">
 <input type="text" class="foo" name="fooRequest" placeholder="Testing requests" />
 <button type="submit" name="submitButton">Send</button>
 </form>

上面的代码发送一个 POST 请求,然后在 PHP 中我们得到 'fooRequest'。但是,如果您要使用 JS,那是不可能的,就像我说的那样,它是一种客户端编程语言

我知道已经有了答案,但我只是想再解释一下。

于 2021-05-29T14:22:07.483 回答
-4

试试这个

function getURIQueryString(){
    var params = {};
    var qstring = window.location.toString().substring(window.location.toString().indexOf("?") + 1);
    var regex = /([^&=]+)=([^&=]+)/g;
    var m;
    while (m = regex.exec(qstring)){
        params[decodeURIComponent(m[1])] = decodeURIComponent(m[2])       
    }
    return params
}

它通常有效。比如获取一个名为test的get参数。用这个

getURIQueryString().test

但是不可能得到一个post请求

于 2018-11-03T15:48:06.293 回答