javascript - 无法使用ajax从javascript调用c#方法

标签 javascript jquery asp.net ajax asp.net-ajax

我有一个 c# 方法,我想在客户端调用它。 我使用 ajax 调用来实现这一点

function ValidateIfDuplicate()
        {
            debugger

            var billtext = $("#ctl00_ContentPlaceHolder2_textBoxBillNumber").val();
            var retailer= $("#ctl00_ContentPlaceHolder2_dropDownListRetailers").val();
            var billdate = $("#ctl00_ContentPlaceHolder2_textBoxBillDate").val();

            if (billtext == "")
            {
                alert("Bill Number cannot be left empty");
                return false;
            }
            else if (retailer == 0) {
                alert("Please select a Retailer");
                return false;
            }
            else if (billdate == '') {
                alert("Date cannot be left empty");
                return false;
            }
            else if (billtext != '' && retailer != '' && billdate != '')
            {


                    $.ajax({
                        Type: "POST",
                        url: "CAInvoiceEntry.aspx/ValidateDuplicateEntry",
                        contentType: "application/json; charset=utf-8",
                        data: { billtext1: billtext, billdate1: billdate, retailer1: retailer },
                        dataType: "json",
                        success: function (result) {
                            debugger
                            alert(result.d);
                        }
                    });

                return true;
            }
        }

这是我的c#方法

[System.Web.Script.Services.ScriptService] 
public partial class CAInvoiceEntry: BaseClass
{
    [WebMethod, ScriptMethod()]
        public static int ValidateDuplicateEntry(string billtext1, string billdate1, string retailer1)
        {
            string validatebill = objCAInvoiceEntry.validatebilldate(textBoxBillNumber.Text, billdate1.ToString(), ViewState[AppConstants.UploadedBy].ToString(), dropDownListRetailers.SelectedValue);
            if (validatebill == "1")
            {

                return 1;
            }
            else
                return 0;
        }
}

但是网络方法没有被触发。 我也尝试使用 pagemethods.methodname() 作为替代方法(通过使用 enablepagemethods=true 注册脚本)但没有效果。

如果有人可以指导我哪里做错了? 只是为了清楚.. 在下图中,您可以看到断点执行,其中跳过了 ajax 调用。 enter image description here

最佳答案

我今天遇到了类似的问题。在我的例子中,我在 App_start 文件夹中有 RouteConfig,所以我通过评论这一行解决了我的问题

//settings.AutoRedirectMode = RedirectMode.Permanent;

这是问题的原因。

还有您的网络方法需要是公开的和静态的

有点像

public static int MethodName()
{
    // your method
}

关于javascript - 无法使用ajax从javascript调用c#方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37276748/

相关文章:

javascript - 由接口(interface)强制执行的异步方法的顺序调用,Angular 4

javascript - 如何在 VSCode 中突出显示全局变量?

javascript - ng-show 与 ng-hide 的性能对比

c# - appsettings.json 中的 ASP.NET Core 强类型选项

asp.net - ASP.NET MVC 4 中的表单例份验证和AllowAnonymous

javascript - 使用 jQuery/Javascript 自动将数据填充到字段中

javascript - 验证电子邮件的正则表达式

javascript - jQuery 对话框 - 如何将 .ui-widget-shadow 作为父元素?

javascript - 自定义下拉列表不起作用

asp.net - SignalR 通知在单独站点上托管的 asp.net 和 web api 客户端