Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript读取post请求参数_Javascript_Html - Fatal编程技术网

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

如何使用JavaScript读取post请求参数,javascript,html,Javascript,Html,我正在尝试从HTML中读取post请求参数。我可以使用JavaScript中的以下代码读取get请求参数 $wnd.location.search $(function(){ $('form').sumbit{ $('this').serialize(); } }); 但它不适用于post请求。有人能告诉我如何使用JavaScript读取HTML中的post请求参数值吗?JavaScript是一种客户端脚本语言,这意味着所有代码都在web用户的机器上执行。另一

我正在尝试从HTML中读取post请求参数。我可以使用JavaScript中的以下代码读取get请求参数

$wnd.location.search
$(function(){
    $('form').sumbit{
        $('this').serialize();
    }
});

但它不适用于post请求。有人能告诉我如何使用JavaScript读取HTML中的post请求参数值吗?

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


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

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

$wnd.location.search
$(function(){
    $('form').sumbit{
        $('this').serialize();
    }
});
在jQuery中,上面的代码将为您提供URL字符串以及URL中的POST参数。 提取POST参数并非不可能

要使用,您需要包括jQuery库。为此,请使用以下命令:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js" type="text/javascript"></script>

用一点PHP让服务器填充JavaScript变量既快捷又简单:

var my_javascript_variable = <?php echo json_encode($_POST['my_post'] ?? null) ?>;
var my_javascript_variable=;
然后以正常方式访问JavaScript变量


注意:除非您选中,否则不能保证任何给定数据或数据类型都会被发布-所有输入字段都是建议,而不是保证。

发布是浏览器从客户端(您的浏览器)发送到web服务器的内容。Post数据通过http头发送到服务器,并且仅在服务器端或从客户端(您的浏览器)到web服务器的路径(例如:代理服务器)之间可用。因此,它不能从客户端脚本(如JavaScript)处理。您需要通过服务器端脚本(如CGI、PHP、Java等)来处理它。如果您仍然需要使用JavaScript编写,您需要有一个web服务器,它可以在您的服务器(如Node)中理解并执行JavaScript。js

POST变量仅在同一浏览器首先发送时才可供浏览器使用。如果另一个网站表单通过POST提交到另一个URL,浏览器将看不到POST数据

站点A:使用POST将表单提交到外部URL(站点B)
站点B:将接收访问者,但仅使用GET变量

可以使用jQuery-PostCapture()读取post请求参数

PostCapture插件由一些技巧组成

当您单击提交按钮时,将发送
onsubmit
事件

此时,PostCapture将序列化表单数据并保存到html5本地存储(如果可用)或cookie存储

为什么不使用localStorage或任何其他方法来设置您需要的值 你想通过吗

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

我指的是给定域/上下文中的任何地方

var xxx=${params.xxx}

使用
中的EL表达式${param.xxx}从post方法中获取参数,并确保js文件包含在
之后,以便您可以直接在js文件中处理类似“xxx”的参数。

我们可以使用Using concept收集使用post提交的表单参数

试试这个:

$('form').serialize(); 

只要将它括起来,它就会显示所有参数,包括隐藏的参数。

您可以使用“json_encode”首先通过PHP对post变量进行编码。 然后从JSON编码的post变量创建一个JS对象(数组)。 然后使用JavaScript循环操作这些变量。。。在下面的示例中,类似于填充HTML表单:

<script>

    <?php $post_vars_json_encode =  json_encode($this->input->post()); ?>

    // SET POST VALUES OBJECT/ARRAY
    var post_value_Arr = <?php echo $post_vars_json_encode; ?>;// creates a JS object with your post variables
    console.log(post_value_Arr);

    // POPULATE FIELDS BASED ON POST VALUES
    for(var key in post_value_Arr){// Loop post variables array

        if(document.getElementById(key)){// Field Exists
            console.log("found post_value_Arr key form field = "+key);
            document.getElementById(key).value = post_value_Arr[key];
        }
    }


</script>

//设置POST值对象/数组
var post_value_Arr=;//使用post变量创建JS对象
控制台日志(post_值_Arr);
//基于POST值填充字段
for(post_value_Arr中的var键){//循环post变量数组
如果(document.getElementById(key)){//字段存在
console.log(“找到后置值Arr key form field=“+key”);
document.getElementById(key).value=post_value_Arr[key];
}
}

一个选项是在PHP中设置cookie

例如:一个名为invalid的cookie,其值为
$invalid
将在1天内过期:

setcookie('invalid', $invalid, time() + 60 * 60 * 24);
然后在JS中读出(使用插件):

现在,您可以从JavaScript中的
无效
变量访问该值。

使用会话存储

$wnd.location.search
$(function(){
    $('form').sumbit{
        $('this').serialize();
    }
});
$(函数(){
$('form')。提交{
document.sessionStorage[“表单数据”]=$('this').serialize();
document.location.href='other page.html';
}

});如果您使用的是Java/RESTAPI,那么解决方法很简单。在JSP页面中,您可以执行以下操作:

    <%
    String action = request.getParameter("action");
    String postData = request.getParameter("dataInput");
    %>
    <script>
        var doAction = "<% out.print(action); %>";
        var postData = "<% out.print(postData); %>";
        window.alert(doAction + " " + postData);
    </script>

var-doAction=“”;
var postData=“”;
window.alert(doAction+“”+postData);

这取决于您对JavaScript的定义。现在,我们实际上在服务器端程序(如NodeJS)中有JS。它与您在浏览器中编写的JavaScript完全相同,只是作为一种服务器语言。 您可以这样做:(由Casey Chu编写的代码:

因此使用
post['key']=newVal

<script>
<?php
if($_POST) { // Check to make sure params have been sent via POST
  foreach($_POST as $field => $value) { // Go through each POST param and output as JavaScript variable
    $val = json_encode($value); // Escape value
    $vars .= "var $field = $val;\n";
  }
  echo "<script>\n$vars</script>\n";
}
?>
</script>
这只是一个示例,不应用于任何敏感数据,如密码等。POST方法的存在是有原因的;将数据安全地发送到后端,这样做将无法达到目的

但是,如果您只需要一堆非敏感表单数据就可以转到下一页,而url中没有
/page?blah=value&bleh=value&blahbleh=value
,这将使url更干净,您也可以
<script>
<?php
if($_POST) {
  $vars = array();
  foreach($_POST as $field => $value) {
    array_push($vars,"$field:".json_encode($value)); // Push to $vars array so we can just implode() it, escape value
  }
  echo "<script>var post = {".implode(", ",$vars)."}</script>\n"; // Implode array, javascript will interpret as dictionary
}
?>
</script>
var myText = post['text'];

// Or use a function instead if you want to do stuff to it first
function Post(variable) {
  // do stuff to variable before returning...
  var thisVar = post[variable];
  return thisVar;
}
<input id="first_post_data" type="hidden" value="<?= $_POST['first_param']; ?>"/>
let my_first_post_param = $("#first_post_data").val();