JS问题 如何在JS中修改<URL>中param的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS问题 如何在JS中修改<URL>中param的值相关的知识,希望对你有一定的参考价值。

比如 :
<portlet:renderURL var="renderURL1" >
<portlet:param name="jspPage" value="/html/record.jsp"></portlet:param>
<portlet:param name="code" value="123"/>
</portlet:renderURL>
在JS中如何将名为“code”的值,改为456?
奖励丰厚

首先你要分清楚服务端代码和客户端代码的区别,
对于js而言,它只能看到你的客户端代码,
服务端代码在发送给客户端浏览器之前已经转换为html或js了,
你的这个<portlet:renderURL
控件,发送到客户端浏览器,已经不叫这个名字了,你用浏览器打开这个页面,看看对应的html变成了什么,然后再用js去相应修改你想修改的内容

js是修改不了服务端代码的

你可以把客户端html帖出来,再说出你想改成什么样追问

就在本页改,把 里的“value” 改成“456”

追答

你还是没理解,你用浏览器访问页面,
然后按右键,查看源代码,
这个源代码里是没有

参考技术A

如果是本页面URL的值是无法修改的,只能获取。

获取本页面param值的方法:

// 假设请求的url为:
 var id= window.location.toString().getQuery('ID');// 后去url中的ID参数

参考技术B 用location.href.substring(location.href.indexOf("?") + 1)取url存入queryString,然后parameters=queryString.split("&"),循环parameters,
取等号位置pos = parameters[i].indexOf('=');if(pos == -1) continue;

取name和value
paraName = parameters[i].substring(0, pos);
paraValue = parameters[i].substring(pos + 1);
if(paraName == retStr)
return unescape(paraValue);


之后可以根据code=返回的值,用replace("",“cdoe=456”)替换,不知道你是不是要这样的追问

值会变成456?
因为一个值在JS中 所以 我就是想在JS中给param 的value赋值,然后再另一个页面取到这个值,

在 Next.js 中设置和获取 URL 参数

【中文标题】在 Next.js 中设置和获取 URL 参数【英文标题】:Set and get URL parameters in Next.js 【发布时间】:2019-04-11 18:25:13 【问题描述】:

我想知道如何在 Next.js 中的 URL 末尾附加一个 ID,以及如何在目标页面中检索它...

<Link href=`/about/$id`><a>About</a></Link>

变成这样……

/about/256983649012

然后在about页面中检索。

我该怎么做?

请记住,我已经知道这种方法...

<Link href= pathname: 'about', query:  id: id ><a>About</a></Link>

但我真的不希望链接是这样的about?id=256983649012

【问题讨论】:

【参考方案1】:

您正在使用 Next.js,因此实现此目的的正确方法是通过 Next.js 的路由系统。 这是通过文件夹结构完成的。你的看起来像这样:

/pages/   (this is provided by Next.js)
-- /about/  
---- [id].js
index.js   (homepage, provided by Next.js)

这将允许您实现 /about/256983649012,其中 id 参数为 256983649012。您页面的所有逻辑都进入 [id].js。

Next.js 上的文档非常好。在此处查看有关路由的进一步阅读:https://nextjs.org/docs/routing/introduction

【讨论】:

【参考方案2】:

您需要在 server.js / app.js 中定义该 id(我在这里使用 Express):

server.js/app.js

const express = require('express')
const next = require('next')

const port = parseInt(process.env.PORT, 10) || 3000
const dev = process.env.NODE_ENV !== 'production'
const app = next( dev )
const handle = app.getRequestHandler()

app.prepare()
  .then(() => 
    const server = express()

    server.get('/about/:id', (req, res) => 
      return app.render(req, res, '/about',  id: req.params.id )
    )

    server.get('*', (req, res) => 
      return handle(req, res)
    )

    server.listen(port, (err) => 
      if (err) throw err
      console.log(`> Ready on http://localhost:$port`)
    )
  )

然后在你的关于页面:

关于.js

import React,  Component  from 'react'

export default class extends Component 
  static getInitialProps ( query:  id  ) 
    return  aboutId: id 
  

  render () 
    return <div>
      <h1>About #this.props.aboutId</h1>
      <p>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
        tempor incididunt ut labore et dolore magna aliqua.
      </p>
    </div>
  

完整示例:here

【讨论】:

当我重新加载页面时,getInitialProps() 函数无法从 url 获取值。请问有什么解决办法吗? 你能提供你的代码吗?或者尝试查看 getInitialProps() 的 props static getInitialProps (props) console.log(props);

以上是关于JS问题 如何在JS中修改<URL>中param的值的主要内容,如果未能解决你的问题,请参考以下文章

js如何将绝对url传入到img标签的src中

如何从挂载的函数中修改全局变量? Vue.js

如何在 vue js 中异步加载图像 src url?

Backbone JS - 路由器问题 - 如何获得干净的 URL

用js如何修改如下div的内容?

js获取url中指定参数的值(兼容hash)