无法将客户端消息传递到服务器端

谜之国

我正在尝试使用以下代码从服务器端发出带有是或否选项的警报消息

如果我选择“确定”按钮,我可以通过“确定”或“取消”按钮获得警报,我需要将相同的消息(确定或取消)传递回服务器

这是我背后的代码

protected void chkboxSelectAll_CheckedChanged(object sender,EventArgs e)
{

   if(productNames.Any(s => s.Contains("Virtual")))
    {
        string str = "you have selected this type of  do u want to create a new  name for this?";
        Page.ClientScript.RegisterStartupScript(typeof(Page), "Confirm", "ConfirmApproval('" + str + "');", true);

        string confirmationValue = Request.Form["confirm_valuetype"];

        if(confirmationValue == "Yes")
        {
           // No able to come inside this  function
            ddlClpFriendlyName.Items.Add(new ListItem("Create New"));
            ddlClpFriendlyName.Items.FindByText("Create New");
            FriendlynameCle_panel.Visible = true;
        }

    }
  }

这是我的客户端功能

function ConfirmApproval(objMsg) {

        var confirm_valuetype = document.createElement("INPUT");
        confirm_valuetype.type = "hidden";
        confirm_valuetype.name = "confirm_valuetype";
        if (confirm(objMsg)) {
            alert(objMsg); // i am able to get this alert
            confirm_valuetype.value = "Yes";
        }
        else {
            confirm_valuetype.value = "No";
        }

        document.forms[0].appendChild(confirm_valuetype);
    }

我不确定为什么我无法将确认值发送回服务器端代码.. 任何人都可以帮助解决我出错的情况,我将非常感激

提前致谢

蛙蛙

您可以按照此进行 AJAX 调用:Calling Server Side function from Client Side Script

您必须通过ajax回调到服务器页面,这将解决您的问题

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>
<script type = "text/javascript">

function ConfirmApproval(objMsg) {

        var confirm_valuetype = document.createElement("INPUT");
        confirm_valuetype.type = "hidden";
        confirm_valuetype.name = "confirm_valuetype";
        if (confirm(objMsg)) {
            alert(objMsg); // i am able to get this alert
            confirm_valuetype.value = "Yes";
        }
        else {
            confirm_valuetype.value = "No";
        }

        callServer(confirm_valuetype);
    }

function callServer(val) {
    $.ajax({
        type: "POST",
        url: "PAgeName.aspx/AlertReply",
        data: '{name: "' + val + '" }',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: OnSuccess,
        failure: function(response) {
            alert(response.d);
        }
    });
}
function OnSuccess(response) {
    alert(response.d);
}
</script>


Server code 

[System.Web.Services.WebMethod]
public static string AlertReply(string name)
{
    ///get value and do processing 
}

我认为问题是

   string str = "you have selected this type of  do u want to create a new  name for this?";
        Page.ClientScript.RegisterStartupScript(typeof(Page), "Confirm", "ConfirmApproval('" + str + "');", true);

有了这一行,一旦您的整个页面在客户端加载,代码就会执行。这意味着隐藏字段是在您的 C# 代码执行完成后创建的。

这意味着你这部分代码

  string confirmationValue = Request.Form["confirm_valuetype"];

    if(confirmationValue == "Yes")
    {
       // No able to come inside this  function
        ddlClpFriendlyName.Items.Add(new ListItem("Create New"));
        ddlClpFriendlyName.Items.FindByText("Create New");
        FriendlynameCle_panel.Visible = true;
    }

在 html 页面中创建归档之前被执行。

您可以在 html 中首先加载页面后访问字段,然后执行按钮单击。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章