3

如何在javascript函数中调用Request.QueryString,我正在使用asp.net和C#

var str=<%=Request.quesryString("val")%>

但它给了我错误

4

7 回答 7

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>
于 2013-03-28T10:51:40.280 回答
1

你可以直接用 JavaScript 来做。

随着window.location.search您获得完整的queryString,例如 ?item1=val1&item2=val2

您可以使用类似的方法获取查询字符串

window.location.search.substr(1)

并使用.split('&')子字符串函数来获取 de 'val' 键或其他键的值

于 2017-02-07T14:59:50.450 回答
1

您实际上可以在 javascript 中编写一个函数,并将查询字符串作为参数从后面的代码中传递。例如我有这个文本框我想将值设置为查询

function searchTerm(text) {
        document.getElementById('txtSearch').value = text;
}

所以在我的代码中,我使用 ScriptManager 调用 javascript 函数并以这种方式传递查询

ScriptManager.RegisterStartupScript(Page, typeof(Page), "", "searchTerm('" + Request.QueryString["id"].ToString() + "')", true);
于 2019-08-02T16:49:03.347 回答
0

在 ASP NET 中的请求中利用安全主题...

您还可以使用JavaScriptStringEncode()AntiXSS 库来防止网站中的 XSS。

于 2013-03-28T11:24:33.890 回答
0

用这个:

var urlParams = 新的 URLSearchParams(window.location.search);

console.log(urlParams.has('someValue')); // 真的

console.log(urlParams.get('someValue')); // “价值”

这是关键敏感

于 2019-06-02T07:24:18.357 回答
0

您做错了使用此代码获取 QueryString 值,因为它不仅在 JavaScript 中为您提供查询字符串,它会将其转换为对象,因此请使用 $.each 函数来检索查询字符串的值

 let id = $(<%= Request.QueryString["id"] %>);
                    id.each((index, value) => {
                        console.log(value);
                    })

它将返回您的查询字符串的值谢谢

于 2018-07-04T17:34:24.600 回答
-1

简短的回答:你不能。块中的代码在<%= %>服务器端进行评估,JavaScript 代码在客户端进行评估。

长答案:您可以使用内联 C# 代码生成 JavaScript 代码,这有时确实有意义。但这与从 JavaScipt 函数调用 C# 代码不同。当然,您只能在 .aspx / .cshtml 等文件中执行此操作,而不能在 .js 文件中执行此操作,因为这些文件仅被视为内容,而不会被 ASP.NET 解析。

[编辑] 在您的情况下,无论如何都不需要打扰,因为无论如何您都可以通过 JS 获取查询字符串,请参阅如何在 JavaScript 中获取查询字符串值?

[EDIT2]:当然,关于 JavaScriptSerializer 的另一个答案在安全性方面是绝对正确的。如果您使用 Razor 视图引擎,事情会变得更容易和更安全,因为它默认转义字符串。但就像我说的,在具体情况下,没有必要费心任何一种方式。

于 2013-03-28T10:47:02.753 回答