如何在javascript函数中调用Request.QueryString,我正在使用asp.net和C#
var str=<%=Request.quesryString("val")%>
但它给了我错误
如何在javascript函数中调用Request.QueryString,我正在使用asp.net和C#
var str=<%=Request.quesryString("val")%>
但它给了我错误
如果此 javascript 代码内联在您的网络表单中,则正确的方法是使用javascript serializer
:
<script type="text/javascript">
var str = <%= new JavaScriptSerializer().Serialize(Request.QueryString["val"]) %>;
alert(str);
</script>
切勿执行以下操作,这是完全不安全的,并且您的网站容易受到 XSS 注入攻击:
<script type="text/javascript">
var str = '<%= Request.QueryString["val"] %>';
alert(str);
</script>
你可以直接用 JavaScript 来做。
随着window.location.search
您获得完整的queryString,例如 ?item1=val1&item2=val2
您可以使用类似的方法获取查询字符串
window.location.search.substr(1)
并使用.split('&')
或子字符串函数来获取 de 'val' 键或其他键的值
您实际上可以在 javascript 中编写一个函数,并将查询字符串作为参数从后面的代码中传递。例如我有这个文本框我想将值设置为查询
function searchTerm(text) {
document.getElementById('txtSearch').value = text;
}
所以在我的代码中,我使用 ScriptManager 调用 javascript 函数并以这种方式传递查询
ScriptManager.RegisterStartupScript(Page, typeof(Page), "", "searchTerm('" + Request.QueryString["id"].ToString() + "')", true);
在 ASP NET 中的请求中利用安全主题...
您还可以使用JavaScriptStringEncode()或AntiXSS 库来防止网站中的 XSS。
用这个:
var urlParams = 新的 URLSearchParams(window.location.search);
console.log(urlParams.has('someValue')); // 真的
console.log(urlParams.get('someValue')); // “价值”
这是关键敏感
您做错了使用此代码获取 QueryString 值,因为它不仅在 JavaScript 中为您提供查询字符串,它会将其转换为对象,因此请使用 $.each 函数来检索查询字符串的值
let id = $(<%= Request.QueryString["id"] %>);
id.each((index, value) => {
console.log(value);
})
它将返回您的查询字符串的值谢谢
简短的回答:你不能。块中的代码在<%= %>
服务器端进行评估,JavaScript 代码在客户端进行评估。
长答案:您可以使用内联 C# 代码生成 JavaScript 代码,这有时确实有意义。但这与从 JavaScipt 函数调用 C# 代码不同。当然,您只能在 .aspx / .cshtml 等文件中执行此操作,而不能在 .js 文件中执行此操作,因为这些文件仅被视为内容,而不会被 ASP.NET 解析。
[编辑] 在您的情况下,无论如何都不需要打扰,因为无论如何您都可以通过 JS 获取查询字符串,请参阅如何在 JavaScript 中获取查询字符串值?
[EDIT2]:当然,关于 JavaScriptSerializer 的另一个答案在安全性方面是绝对正确的。如果您使用 Razor 视图引擎,事情会变得更容易和更安全,因为它默认转义字符串。但就像我说的,在具体情况下,没有必要费心任何一种方式。