如何使用javascript读取post请求参数

Don*_*onX 79 html javascript

我试图从我的HTML中读取post请求参数.我可以使用javascript中的以下代码读取get请求参数.

$wnd.location.search
Run Code Online (Sandbox Code Playgroud)

但它不适用于发布请求.任何人都可以告诉我如何使用javascript读取我的html中的post请求参数值.

rah*_*hul 156

POST数据是服务器端处理的数据.Javascript在客户端.因此,您无法使用JavaScript读取帖子数据.

  • 虽然结论是正确的(你无法从javascript获取数据)但推理是错误的.客户端(浏览器)是首先将POST数据发送到服务器的客户端.所以客户很清楚这些数据是什么.实际的原因很简单,浏览器不会使这些数据可用于javascript(但它完全可以). (58认同)
  • @PlatinumAzure,我不确定你明白这一点.你说POST数据存在于服务器中,并且由于javascript在客户端运行,因此JS无法访问该数据.这是错误的,POST数据同时存在于客户端和服务器中,而JS无法访问该数据的原因仅仅是因为客户端(浏览器)不能使其可用于JS.就如此容易. (32认同)
  • @PlatinumAzure,是的,不管出于什么原因都无法做到.但如果你要解释这个原因是什么,请确保这是正确的理由.你解释为什么不可能是错的,这就是重点. (12认同)
  • 由于浏览器正在开发类似Web应用程序的东西,在浏览器中运行(通常)100%的应用程序(没有服务器,托管文件除外),因此自然需要能够接收更大的数据块.查询字符串(GET方法)的大小有限(想想4K),因此从javascript读取更大块的POSTED数据的能力将是一个好主意恕我直言. (9认同)

小智 22

使用一小段PHP来让服务器填充JavaScript变量既快捷又简单:

var my_javascript_variable = <?php echo $_POST['my_post'] ?>;
Run Code Online (Sandbox Code Playgroud)

然后以正常方式访问JavaScript变量.

  • 小心逃脱/添加引号/等.如果你走这条路线,你的POST数据.另一种方法是使用json_encode(),它几乎适用于任何数据类型.示例:http://www.abeautifulsite.net/passing-data-from-php-to-javascript/ (11认同)
  • 这是不可行的,可能存在字符转义问题。 (2认同)
  • 肯定是被黑了。没有转义就不要使用上面的方法。 (2认同)

Pla*_*ure 9

JavaScript是一种客户端脚本语言,这意味着所有代码都在Web用户的机器上执行.另一方面,POST变量转到服务器并驻留在那里.浏览器不会将这些变量提供给JavaScript环境,任何开发人员也不应期望它们神奇地存在.

由于浏览器不允许JavaScript访问POST数据,因此如果没有像PHP这样的外部代理将POST值回显到脚本变量或捕获传输中的POST值的扩展/插件,则几乎不可能读取POST变量.GET变量可通过变通方法获得,因为它们位于可由客户端计算机解析的URL中.

  • 我强烈反对你的-1.在OP的任何地方都没有指定AJAX的问题,因此留下了链接点击和表单提交不是由JavaScript执行的可能性.后者特别是POST变量存在但客户端不可用的示例,除非服务器响应是由脚本生成的,并且脚本选择将POST变量的值回显到JS代码中.如果我能-1你的评论,我会的. (3认同)
  • 我的解释不完整,没有错.我已经编辑了我的答案,所以即使你应该感到高兴.如果你不是,那么不要给我-1和讽刺评论,而是自己编辑. (3认同)
  • 我不是在谈论AJAX。我的论点涉及任何形式的POST请求。浏览器知道作为HTTP请求的一部分发送的每个参数,其中包括URL和POST参数。其中一些参数可用于javascript,而其他参数则不可用。这仅仅是浏览器施加的限制,它很可能允许从JS访问POST参数,但这不是事实,这很简单。 (2认同)

Ian*_*bae 6

为什么不使用localStorage或任何其他方式来设置您想要传递的值?

这样你就可以从任何地方访问它!

  • 为什么不只是一个简单的cookie? (2认同)

小智 6

使用sessionStorage!

$(function(){
    $('form').submit{
       document.sessionStorage["form-data"] =  $('this').serialize();
       document.location.href = 'another-page.html';
    }
});
Run Code Online (Sandbox Code Playgroud)

在another-page.html:

var formData = document.sessionStorage["form-data"];
Run Code Online (Sandbox Code Playgroud)

参考链接-https://developer.mozilla.org/zh-CN/docs/Web/API/Window/sessionStorage