在javascript函数中调用request.querystring

时间:2013-03-28 10:39:58

标签: c# javascript asp.net

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

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

但它给了我错误

7 个答案:

答案 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视图引擎,事情会变得更容易和更安全,因为它默认情况下会转义字符串。但就像我说的那样,在具体情况下,没有必要打扰任何一种方式。

相关问题