Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将下拉值传递给代码隐藏静态方法_Javascript_C#_Asp.net - Fatal编程技术网

Javascript 将下拉值传递给代码隐藏静态方法

Javascript 将下拉值传递给代码隐藏静态方法,javascript,c#,asp.net,Javascript,C#,Asp.net,我试图在我的代码隐藏自动完成方法中使用语言选择值。我尝试使用隐藏的_字段,但不起作用。而且ajax对我也不起作用 这是我的html下拉菜单: <!-- Language Picker--> <div class="row" hidden="hidden"> <select class="btn btn-default dropdown-toggle" id="lang_sel" style="width: 200px; positio

我试图在我的代码隐藏自动完成方法中使用语言选择值。我尝试使用隐藏的_字段,但不起作用。而且ajax对我也不起作用

这是我的html下拉菜单:

<!-- Language Picker-->
    <div class="row" hidden="hidden">
            <select class="btn btn-default dropdown-toggle" id="lang_sel" style="width: 200px; position: relative; left: 19px;"  data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                <option value="no_sel">Please select a language</option>             
                <option value="German">German</option>
                <option value="French">French</option>
                <option value="Spanish">Spanish</option>
            </select>
    </div>
我希望有人有主意


更新


这是我的隐藏字段:

<asp:HiddenField ID="hidden_language" runat="server" ClientIDMode="Static"> </asp:HiddenField >
我尝试用以下方法更改语言:

public void Lang_Change(string lang)
        {
            language = lang;
        }
我用这个ajax函数进行了尝试:

$.ajax({  
                    type: "POST",  
                    url: "/default.aspx/Lang_Change",  
                    contentType: "application/json; charset=utf-8",  
                    data: '{"lang":"' + $("#hidden_language").val() + '"}',  
                    dataType: "html",  
                    success: function ()
                    {  
                        alert("SUCCESS");  
                    },  
                    error: function ()
                    {  
                        alert("FAIL");
                    }  
                });  
但每次都失败了。页面的名称为default.aspx。我不知道路径是否有问题。

所以我只发布“将参数传递给codebehind”解决方案。从(我最喜欢的)中,我根据您的要求重新创建了示例,您必须为数据库查询重新创建它:

AjaxTest.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxTest.aspx.cs" Inherits="AjaxTest" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <!-- Language Picker-->
            <select class="btn btn-default dropdown-toggle" id="lang_sel" style="width: 200px; position: relative; left: 19px;" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                <option value="no_sel">Please select a language</option>
                <option value="German">German</option>
                <option value="French">French</option>
                <option value="Spanish">Spanish</option>
            </select>
            <br /> <br />
            <input id="btnSetLanguage" type="button" value="Set language" onclick="SetLanguage()" />
        </div>
    </form>

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

    <script type = "text/javascript">
        function SetLanguage() {
            $.ajax({
                type: "POST",
                url: "AjaxTest.aspx/Lang_Change",
                data: '{language:"' + $("#lang_sel option:selected").text() + '" }',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function (response) {
                alert(response.d);
            }
            });
        }
        function OnSuccess(response) {
            alert(response.d);
        }
    </script>
</body>
</html>
结果:


因为您试图调用WebMethod,所以需要使用AJAX,这正是它的设计目的。因此,请展示您尝试过的ajax代码,并解释出现了什么问题。从下拉列表中获取所选值并将其发送到服务器应该相当简单
sys_lang
将需要成为您的webmethod的输入参数之一。请检查下面的答案。我对您的解决方案做了一点修改,但总体上还是有效的。非常感谢你
public void Lang_Change(string lang)
        {
            language = lang;
        }
$.ajax({  
                    type: "POST",  
                    url: "/default.aspx/Lang_Change",  
                    contentType: "application/json; charset=utf-8",  
                    data: '{"lang":"' + $("#hidden_language").val() + '"}',  
                    dataType: "html",  
                    success: function ()
                    {  
                        alert("SUCCESS");  
                    },  
                    error: function ()
                    {  
                        alert("FAIL");
                    }  
                });  
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxTest.aspx.cs" Inherits="AjaxTest" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <!-- Language Picker-->
            <select class="btn btn-default dropdown-toggle" id="lang_sel" style="width: 200px; position: relative; left: 19px;" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                <option value="no_sel">Please select a language</option>
                <option value="German">German</option>
                <option value="French">French</option>
                <option value="Spanish">Spanish</option>
            </select>
            <br /> <br />
            <input id="btnSetLanguage" type="button" value="Set language" onclick="SetLanguage()" />
        </div>
    </form>

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

    <script type = "text/javascript">
        function SetLanguage() {
            $.ajax({
                type: "POST",
                url: "AjaxTest.aspx/Lang_Change",
                data: '{language:"' + $("#lang_sel option:selected").text() + '" }',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function (response) {
                alert(response.d);
            }
            });
        }
        function OnSuccess(response) {
            alert(response.d);
        }
    </script>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class AjaxTest : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    [System.Web.Services.WebMethod]
    public static string Lang_Change(string language)
    {
        return "Language selected: " + language;
    }
}