【问题标题】:How to pass a string from javascript to server? and then get a return value from server in asp.net webforms如何将字符串从javascript传递到服务器?然后在 asp.net webforms 中从服务器获取返回值
【发布时间】:2023-03-29 12:04:01
【问题描述】:

我有这个模态。在表单标签内

<div id="Incoming_Call" class="modal fade" role="document">
    <asp:Label runat="server" id="Caller_id" Text="Incoming Call"</asp:Label>
</div>

我想在模态显示时更改标签文本

<script> 
string id = "temporary value"//javascript has this value on clientside.
// i don't have this value on page load but after some event triggers.

$('#Incoming_call').on('shown', function(){
    id="zetawars@hotmail.com";
    var text  = '<%= generatestring(id)%>';
    $('#<%=Caller_id.ClientID%>').html = id;
});
</script>

在字符串从 id="temporary Value" 更改为 id="zetwars@hotmail.com" 或其他内容后,我需要将 id 变量发送到服务器端的函数 generateString()

这是在服务器端。

public string generateString(string id)
{
     id = // does some processing;
     return id;
 }

所以,我想向服务器端发送一个 javascript 变量,然后服务器必须进行一些处理并返回值。 javascript 变量在页面加载时尚未准备好。所以我不能在&lt;%%&gt;这些标签中传递它并获得更新的值。它只会将“临时值”作为字符串而不是新值传递。

【问题讨论】:

  • 我认为做到这一点的唯一方法是使用 post 值或其他内容重新加载页面,或者也许 Ajax 可以帮助重新加载站点的仅 1 个部分。我也想这样做,但最终在新值到达后重新加载页面。
  • 您需要使用Request.Form Collection
  • 方法有很多,webmethods 可能是最简单的上手方式。

标签: javascript c# asp.net webforms


【解决方案1】:

从 javascript 调用服务器端方法非常简单。您可以使用 jQuery $.ajax 函数和 [WebMethod] 来完成此操作

背后的代码:

protected void Page_Load(object sender, EventArgs e)
{
}

[System.Web.Services.WebMethod]
public static string generateString(string id)
{
    System.Diagnostics.Debugger.Break();
    return String.Format("Response from server for - {0}.Call time - {1}",id,DateTime.Now.ToString("HH:mm:ss"));
}

.ASPX:

<head runat="server">
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            var id = "temporary value";

            $("#btnMakeAjaxCall").click(function () {
                MakeAjaxCall();
            });

            function MakeAjaxCall() {
                $.ajax({
                    type: "POST",
                    url: "AjaxCallExample.aspx/generateString",
                    contentType: "application/json;charset=utf-8",
                    data: '{id:"' + id + '"}',
                    dataType: "json",
                    success: function (data) {
                        var caller = '<%: Caller_id.ClientID %>';
                        $("#" + caller).text(data.d)
                    },
                    error: function (errordata) {
                        console.log(errordata);
                    }
                });
            }
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <input type="button" id="btnMakeAjaxCall" value="Make AJAX call" />
        <asp:Label ID="Caller_id" runat="server" Text="Incoming Call"></asp:Label>
    </form>
</body>

【讨论】:

  • thnkx 成功了。不过我也不得不使用网络服务。
  • 我也有一个问题。你如何获得data.d?什么是d?你在哪里定义的? $("#" + caller).text(data.d)
  • data.d 来自 Microsoft 的 Web 方法实现。要求通过属性访问数据是一项安全功能。他们必须选择一些东西,他们选择d
  • 感谢信息
【解决方案2】:

您可以对服务器进行 ajax 调用并使用返回值。 您可以在每次显示模态时进行 ajax 调用 要么 您可以在准备好从服务器获取结果时进行 ajax 调用,这样您就可以进行 ajax 调用并将结果存储在页面上的隐藏变量或其他一些已定义的变量中,并在模态中使用该变量。

用于对服务器进行 ajax 调用的 jQuery 代码 要进行 ajax 调用,您需要在页面中添加对 jQuery 的引用。

$.ajax({
        url: "/controller_name/method_name",
        type: "POST",
        data: { var1:var1},
        success: function (response) {
           //use response here

        },
        error: function () {
            alert("Some unexpected error occured. Please try again.");
        }
    });

这是您可以完成您想要的事情的方式,让我们知道您在编码方面也需要帮助。

【讨论】:

  • 我需要帮助。可以举个例子吗
  • 我正在使用网络表单。这里的控制器是什么。我在母版页上有代码。病人大师。以及应该如何调用该函数? modal.on(shown function(){ // here? }) 怎么返回值?
猜你喜欢
  • 1970-01-01
  • 2018-11-18
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
  • 2016-07-13
  • 2020-07-04
  • 2017-10-21
  • 2018-03-17
相关资源
最近更新 更多