【问题标题】:pass variable to asp through json.parse通过 json.parse 将变量传递给 asp
【发布时间】:2017-01-10 14:36:33
【问题描述】:

我在后面的 VB 代码中有一个函数,它使用参数并输出 datatable 供前端用于在谷歌地图上放置标记。从前面,我需要发送一个用户输入的变量。

Javascript 伪:

if (a = true){
    var varName = inputBox.value;
    var passer1 = chkCondition1();
    var passer2 = chkCondition2();

    if (passer1 == true && passer2 == true) {
        Coordinates = JSON.parse('<%=ConvertTabletoString(varName) %>');
    }
else {
    //do other stuff
     }

我收到了错误:

错误 2 'varName' 未声明。它可能无法访问,因为它 保护等级。

我不确定在这里做什么。有没有办法解决这个问题?

【问题讨论】:

  • &lt;%=ConvertTableto...blabla... %&gt; 中的内容在您的 VB 中的服务器端执行,因此它对 varName 存在于您的 javascript 中一无所知。
  • 明白了。所以我必须将该变量传递给后端。我记得看到过使用隐藏字段的方法,但感觉很hacky,这是公认的方法吗?
  • 从 mvc 背景进入 webforms 我还发现隐藏字段是一种奇怪的做事方式,但我认为这是完全可以接受的。不过,有时您可能会更好地使用来自您的 javascript 的 AJAX 调用,这取决于。设置隐藏字段后,需要从服务器端读取它,那么如何触发呢?然后,您可能还需要在您的页面上使用 asp:button 来读取服务器端单击事件中的隐藏字段,然后如果您的 javascript 需要处理响应...?所以是的,ajax 调用有时会更容易。

标签: javascript asp.net json vb.net


【解决方案1】:

您遇到问题的原因是您要在服务器端使用的变量在服务器上不存在,而且在您打算到达它的点也不存在于客户端。您实际上是尝试访问将在客户端创建的服务器上的变量,但您打算访问它的点基本上是在您的用户在浏览器中看到任何内容之前。

  1. 您需要通过ajax 将您的值发布到服务器端。

  2. 您需要一个server-side API function,当您的命令到达服务器并发送回您在客户端需要的 JSON 时调用它

  3. 在您的 ajax callback 中解析响应 JSON。

  4. 利润。

【讨论】:

    【解决方案2】:

    "varName" 是客户端变量,这就是您收到该错误的原因。

    如果“inputBox”是服务器控件,您可以直接从 ConvertTabletoString() 方法访问它的值。

    如果没有,请使用带有 runat="server" 的隐藏字段并将 inputBox.value 分配给它。因此,您可以从服务器方法访问隐藏字段值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      相关资源
      最近更新 更多