如何将字符串从javascript传递到服务器?然后从asp.net web表单中的服务器获取返回值

How to pass a string from javascript to server? and then get a return value from server in asp.net webforms

本文关键字:服务器 web net asp 表单 返回值 获取 然后 javascript 字符串      更新时间:2023-09-26

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

<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变量在页面加载时还没有准备好。所以我不能在<%%>这些标签中传递它并获得一个新的值。它只会将"临时值"作为字符串传递,而不会传递新值。

从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>

您可以对服务器进行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.");
        }
    });

这是你可以实现你想要的方式,让我们知道你在编码方面也需要帮助。