js函数中怎么获取request中值的属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js函数中怎么获取request中值的属性相关的知识,希望对你有一定的参考价值。

什么是request对象

Request对象的作用是与客户端交互,收集客户端的Form、Cookies、超链接,或者收集服务器端的环境变量。

request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。客户端可通过html表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取这些数据。request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项。

在JS中获取到request,网页地址的方法:

window.location.href

这里假设URL完整为:baidu.com/index.html?test=233333


这里要取request中值的属性,可以使用正则表达式获取

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

首先使用RegExp构造一个正则正则表达式对象

var reg = new RegExp("(^|/?|&)test=([^&]*)(&|$)", "i");

参数

    pattern             一个字符串,指定了正则表达式的模式或其他正则表达式。

    attributes          可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

修饰符

    i    执行对大小写不敏感的匹配。    

    g    执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。    

    m    执行多行匹配。    

然后使用match匹配出结果来

var match= window.location.href.match(reg);

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

参数

    searchvalue    规定要检索的字符串值。    

    regexp            规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。    

取出结果

match[2]

返回:233333

将它封装为一个函数

function getRequestValue(name)  
var reg = new RegExp("(^|/?|&)" + name + "=([^&]*)(&|$)", "i"); 
var match= window.location.href.match(reg); 
return match&&match[2]||null;

完整实例代码:

<html>
<head>
<title></title>
</head>
<body>

</body>
<script type="text/javascript">
function getValue(name)  
var reg = new RegExp("(^|/?|&)" + name + "=([^&]*)(&|$)", "i"); 
var match= window.location.href.match(reg); 
return match&&match[2]||null;


console.log(getValue('test'));
</script>
</html>

参考技术A

js是不能直接获得request中的值的,所以基本有俩种方法

    把request中的放到隐藏域中,然后通过js去拿

    通过小脚本var a=<%=requestScope.xx%>,windows在加载js的时候会把值带进去

参考技术B js中并不能直接获取到request中的值,因为js是在浏览器中运行的,而request是在服务器端的,并不能直接交互值。但是可以间接传值,拿jsp举例,简单常用的方式是在jsp中使用el表达式获取request中的值,形如,$name,其中name就是存在request中的对象。我们只要把这样的el表达式放在我们需要使用到的js代码中就行了,如 var name = $name,就可以把request中的name值赋给一个js变量了,但需要注意的是这个过程是在后台就完成的。你不能在浏览器中动态的用js代码去调用request中的值。希望我这样说你可以理解,欢迎追问 参考技术C 1:写一个方法获取

function getUrlParam(name)
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r!=null) return unescape(r[2]); return null;


getUrlParam("XXX") XXX为要获取的request属性名称
2:用现成JS库,这些方法都已经实现好了,直接就可以用,比如jquery
$.attr("XXX") XXX为要获取的request属性名称
参考技术D 一般来说有两种:一种是通过在请求后面拼接的方式
另一种是封装通过params传递的方式

道具对象的属性在刷新函数中未定义

【中文标题】道具对象的属性在刷新函数中未定义【英文标题】:The prop object's property is undefined in refresh function 【发布时间】:2020-03-15 18:10:27 【问题描述】:

我使用 Vue.js 并且有一个组件。我将一个道具“请求”传递给该组件:

<adjustments-list
  v-if="request"
  :request="request"
/>

在组件中我可以做到这一点:

<text-input
  :value="request.id"
/>

显示“id”的值是有效的。

在组件的 props 部分:

props: 
  request: Object

在组件的挂载钩子中:

async mounted () 
  await this.refresh()
,

在组件的刷新功能中:

async refresh () 
  console.log('this.request.id =', this.request.id)
  if (this.request.id) 
    const data = await requestApi.getRequestResultAdjustmentByReqId(this.request.id)
  
,

this.request.id 未定义。

我不知道为什么。

【问题讨论】:

请求属性是从父组件传递的?我认为当子组件只是“安装”时,该属性还没有被初始化或其他什么。 是的。请求属性已从父组件传递。但是,如何让它发挥作用呢? 也许您可以为该属性添加一个“手表”并从那里开始? 【参考方案1】:

如果request 属性对组件是异步可用的,那么您必须使用以下观察者的组合:

// adjustments-list component
new Vue(

  props: 
    request: Object
  ,

  data() 
    return 
      apiData: null
    
  ,

  watch: 
    request(newValue, _oldValue) 
      this.refresh(newValue);
    
  ,

  mounted: function () 
    // Do something here
  ,

  methods: 

    refresh (request) 
      if (request.id) 
        // Using promise instead of async-await
        requestApi.getRequestResultAdjustmentByReqId(request.id)
          .then(() => this.apiData = data);
      
    

  
);

另外,请注意,mounted 应该是一个普通的旧 JS 函数,而不是 async 函数。这就是组件的生命周期方法应该以特定方式运行。

【讨论】:

以上是关于js函数中怎么获取request中值的属性的主要内容,如果未能解决你的问题,请参考以下文章

jsmap怎么获取里面所有的属性

node.js createserver获取请求值

怎么用js获取到css3属性的值 比如获取transform的值

JSP的内置对象的调用函数介绍

js中函数判断其他函数返回值是不是符合条件,返回值给按钮的DISABLED属性

js中undefined的使用