Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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_Jquery_Asp.net_Ajax_Webforms - Fatal编程技术网

Javascript 不刷新页面的调用服务器方法

Javascript 不刷新页面的调用服务器方法,javascript,jquery,asp.net,ajax,webforms,Javascript,Jquery,Asp.net,Ajax,Webforms,我读了很多关于这方面的文章和帖子,但我无法找到解决问题的方法 我在aspx.cs页面中有一些方法。方法不返回任何内容,它只是更改标签、文本框中的值 [System.Web.Services.WebMethod] public void MethodName() { //some code } 在前端我有一个单选按钮,它应该调用这个方法。当我调用常规的服务器端方法(rdbMethodName_CheckedChanged)来重新加载页面时,它就会工作。现在我想在不重新加载的情况下调用这个方

我读了很多关于这方面的文章和帖子,但我无法找到解决问题的方法

我在aspx.cs页面中有一些方法。方法不返回任何内容,它只是更改标签、文本框中的值

[System.Web.Services.WebMethod]
public void MethodName()
{
   //some code
}
在前端我有一个单选按钮,它应该调用这个方法。当我调用常规的服务器端方法(rdbMethodName_CheckedChanged)来重新加载页面时,它就会工作。现在我想在不重新加载的情况下调用这个方法。我试着用阿贾克斯

<asp:RadioButton ID="rbTwoSub" runat="server" GroupName="Subscription" value="2" AutoPostBack="false" OnCheckedChanged="rdbMethodName_CheckedChanged" />
此代码在控制台中返回页面的html代码,不带参数,也不调用此方法

我只需要调用后端方法,它将改变所有的值,就是这样。有人知道怎么做吗

我只想到一件事,那就是将所有C#代码重写为javascript代码,并在单击时只调用js方法

--------2015年12月16日编辑

嗨,我试着调用简单的ajax post,它将返回一个值,但它也不起作用

下面是代码

            $.ajax({
                type: "POST",
                url: "buy_sql_tools_new.aspx/HelloWorld",
                data: "{}",
                contentType: "application/json",
                dataType: "json",
                success: function (msg) {
                    alert(msg);
                },
                error: function (msg) {
                    console.log('error' + msg);
                }
            });
aspx.cs

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static string HelloWorld()
{
    return "Hello";
}

您的webmethod应该是静态的。此外,如果您希望在ajax调用成功后实际更改某些内容,则必须返回要更新的数据

试试这样做。请注意,该示例用于序列化

jQuery代码:

    $(document).ready(function () { 

        $("input:radio[name='Subscription']").click(function () {

            var selectedRadio = $("input:radio[name='Subscription']:checked").val();

            //Code to fetch complex datatype
            $.ajax({
                type: "POST",
                url: "buy_sql_tools_new.aspx/GetProduct?product=ProductName",
                dataType: "json",
                data: "{ id :'" + selectedRadio + "'}",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                  //perform the desired operations here eg. change labels and etc by getting the values from data object.
                },
                error: function () {
                    console.log('error');
                }
            });

        });            
    });
</script>

希望这对您有所帮助。

您必须执行类似于对服务器的AJAX调用的操作,获取新值,然后使用客户端模板引擎(例如Handlebar或其他类似的author)要在浏览器中呈现这些内容而不刷新页面,标记中仍有
OnCheckedChanged
——您需要向控件添加一个单击事件侦听器,因为RadioButton没有OnClientClickproperty@NikosM. tnx,我明天要试试这个。@JaromandaX单击事件没有问题,它可以工作。ajax和传递值/ChangesOry有问题,我重新阅读了代码,我看到它是在与控件绑定的更改事件上-但是,
OnCheckedChanged
事件仍在触发-您是否尝试删除它?Tnx作为答案。在上面的考试中,我总是使用Ajax和Json(在MVC中),但现在我使用web.form,我不想管理Json post。我只是尝试在服务器端方法中设置值(someID.Text(“sometext”))。我可以这样做吗?或者我应该将Json传回,然后更改值。您不能从页面的代码后面更改页面。这是因为该方法是静态的。因为它是静态的,所以该方法属于页面的每个实例。如果有多个人打开了该页面,则该方法将不知道要更新哪个页面。因此,您必须将信息发送回ajax调用。@wazz Tnx进行解释。@Agop Dogramadzhiyan我尝试了您的代码,但出现了错误。我复制了您的方法和ajax调用,但没有成功。@Agop Dogramadzhiyan我只是调试了应用程序,在错误响应中得到了整个页面的html
    $(document).ready(function () { 

        $("input:radio[name='Subscription']").click(function () {

            var selectedRadio = $("input:radio[name='Subscription']:checked").val();

            //Code to fetch complex datatype
            $.ajax({
                type: "POST",
                url: "buy_sql_tools_new.aspx/GetProduct?product=ProductName",
                dataType: "json",
                data: "{ id :'" + selectedRadio + "'}",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                  //perform the desired operations here eg. change labels and etc by getting the values from data object.
                },
                error: function () {
                    console.log('error');
                }
            });

        });            
    });
</script>
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static string GetProduct(string product)
    {
        string result = string.Empty;
        try
        {
            //Get the product
            Product product = new Product();
            product.Name = "Sql tool";
            product.Price = 3.99M;
            result = JsonConvert.SerializeObject(product);
            //example output
            //{
            //  "Name": "Apple",
            //  "Price": 3.99,
            //}
        }
        catch (Exception ex)
        {
             result = ex.ToString();
            //Exception Handling Logic goes here
        }
        return result;
    }