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