javascript - JS 输入文本到 url + base64 编码
问题描述
我是 JS 的新手,所以我会尝试解释这个问题。我正在寻找一个 JS 来执行一些任务,例如:输入文本表单以在 base64 解码字符串中包含某些“文本”,然后对该字符串进行编码。将该编码结果添加到 url 并在提交时打开该 url。
base64 解码字符串类似于:
{
"componentDef":"forceSearch:search",
"attributes":{
"term":"SEARCH STRING 2",
"scopeMap":{
"type":"TOP_RESULTS"
},
"context":{
"disableSpellCorrection":false,
"SEARCH_ACTIVITY":{
"term":"SEARCH STRING 2"
}
}
}
}
输入文本表单应将 SEARCH STRING 2 替换为提交的文本,例如:
{
"componentDef":"forceSearch:search",
"attributes":{
"term":"MYSUBMITEXT",
"scopeMap":{
"type":"TOP_RESULTS"
},
"context":{
"disableSpellCorrection":false,
"SEARCH_ACTIVITY":{
"term":"MYSUBMITEXT"
}
}
}
}
之后,结果应该是 base64 编码:
btoa({
"componentDef":"forceSearch:search",
"attributes":{
"term":"MYSUBMITEXT",
"scopeMap":{
"type":"TOP_RESULTS"
},
"context":{
"disableSpellCorrection":false,
"SEARCH_ACTIVITY":{
"term":"MYSUBMITEXT"
}
}
并在编码后将结果添加到 url
onClick="javascript: window.open('http://www.mywebsite.com/print/' + encoded result)"
我目前的主要问题是替换 2 个搜索字符串。我无法更换它,因为它的编码?!
更新:
我目前有这个代码,但编码总是相同的,所以我不是用户输入的文本值:
<html>
<script type="text/javascript">
function goToPage() {
var searchQuery = document.getElementById('text').value;
var stringToEncode = '{"componentDef":"forceSearch:search","attributes":{"term":"'+ searchQuery + '","scopeMap":{"type":"TOP_RESULTS"},"context":{"disableSpellCorrection":false,"SEARCH_ACTIVITY":{"term":"'+ searchQuery + '"}}}}';
var encodedString = btoa(stringToEncode);
document.write("http://www.mywebsite.com/print/" + encodedString);
}
</script>
<input type="text" id="text" />
<input type="submit" value="submit" onclick="goToPage();" />
</html>
解决方案
- 使用将字符串解析为 JavaScript 对象
JSON.parse
var myString = '{"componentDef":"forceSearch:search","attributes":{"term":"SEARCH STRING 2","scopeMap":{"type":"TOP_RESULTS"},"context":{"disableSpellCorrection":false,"SEARCH_ACTIVITY":{"term":"SEARCH STRING 2"}}}}';
var myObject = JSON.parse(myString);
- 访问对象中的属性并将其替换为所需的值
myObject.attributes.term = 'New value';
myObject.attributes.context.term = 'New value';
- 将对象转换回字符串并使用 base64 对其进行编码
var newString = JSON.stringify(myObject);
var encodedString = btoa(newString);
点击处理程序
<a href="#" onclick="javascript:window.open('http://www.mywebsite.com/print/' + encodedString)">Click here</a>
推荐阅读
- css - 尽管@media 在源 .css 中,但 CSS 媒体标签不适用于生产,而是在本地工作
- mysql - 排名输出中的排名系统差距
- oracle - 如何使用输入用户的列名将数据插入数据库
- regex - 正则表达式从字符串中提取不一致的邮政编码
- mysql - 使用 Excel 进行 MySQL 查询
- android - 组合图(条形图和折线图)+ xAxis.setValueFormatter
- c# - 如何更改 UITypeEditor 按钮上的“...”文本?
- swift - 如何在 Swift 中获取数组的中间索引?
- javascript - 不进入 JavaScript 'for' 循环(用于添加到表中)
- java - 如何为 jar 中的所有文件授予 CHMOD 0755 权限