Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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
C# ASP.NET:ASPX与ASMXWebMethods处理AJAX_C#_Jquery_Asp.net_Ajax_Web Services - Fatal编程技术网

C# ASP.NET:ASPX与ASMXWebMethods处理AJAX

C# ASP.NET:ASPX与ASMXWebMethods处理AJAX,c#,jquery,asp.net,ajax,web-services,C#,Jquery,Asp.net,Ajax,Web Services,我在Default.aspx上有以下ajax代码: $.ajax({ //url: "Default.aspx/GetCompany", url: "WebService.asmx/GetCompany", type: "POST", data: { companyName: compName }, dataType: "xml", success: function (data) { var jQueryXml = $(data)

我在Default.aspx上有以下ajax代码:

$.ajax({
    //url: "Default.aspx/GetCompany",
    url: "WebService.asmx/GetCompany",
    type: "POST",
    data: { companyName: compName },
    dataType: "xml",
    success: function (data) {
        var jQueryXml = $(data);
        $('#txtBoxInn').val(jQueryXml.find('INN').text());
    }
});
当我将web服务url作为参数传递时,一切正常。当我传递aspx页面url时,什么也没发生。方法的主体在.asmx和.aspx文件中是相同的

我的问题是,是否可以使用aspx页面而不是asmx服务来实现ajax请求

有一个服务器端代码:

namespace WSS_AJAX_SQL
{
    [System.Web.Script.Services.ScriptService]
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        [WebMethod]
        public Company GetCompany(string companyName)
        {
            Company company = new Company();

            string cs = @"Data Source=Barrus-laptop\sqlexpress;Initial Catalog=WSS_Companies;Integrated Security=True";

            using (SqlConnection connection = new SqlConnection(cs))
            {
                SqlCommand command = new SqlCommand($"select * from [CompanyList] where [Name] = '{companyName}'", connection);
                command.CommandType = System.Data.CommandType.Text;

                connection.Open();
                SqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    company.ID = Convert.ToInt32(reader["ID"]);
                    company.Name = reader["Name"].ToString();
                    company.INN = Convert.ToInt32(reader["INN"]);
                }
            }
            return company;
        }
    }
}
console.log的结果:

  • XML格式+Web服务(这正是我所希望的):

    2. 微软 994542214

  • XML+Web页面返回整个页面(从!DOCTYPE到/html)

  • JSON+网页返回一个objest:

  • 对象d:
    目标:2
    客栈:994542214
    名称:“Microsoft”
    __键入:“WSS\u AJAX\u SQL.Company”
    __原型:对象
    __原型:对象
    是的,这是可能的。 在您的ASPX页面中,声明[webmethod]:

    public partial class Pagename: System.Web.UI.Page
    {
        [WebMethod]
        public static Company GetCompany(string companyName)
        {
            ......
        }
        ...
    }
    
    请更改:

    dataType: "xml",
    
    data: { companyName: compName },
    
    $('#txtBoxInn').val(jQueryXml.find('INN').text());
    
    致:

    请更改:

    dataType: "xml",
    
    data: { companyName: compName },
    
    $('#txtBoxInn').val(jQueryXml.find('INN').text());
    
    致:

    请注意,[WebMethod]方法需要声明为static

    在AJAX成功方法中,请更改:

    dataType: "xml",
    
    data: { companyName: compName },
    
    $('#txtBoxInn').val(jQueryXml.find('INN').text());
    
    致:


    我有这个属性,但它不起作用。问题是否可能是我试图访问客户端代码所在的页面?不,这不是问题所在。你能分享服务器端的代码吗?我把它添加到了问题中。请将该方法设置为静态。如果这没有帮助,请检查Chrome或IE(F12)中的开发工具,查看是否有任何错误occours?Chrome没有给出任何信息,IE报告错误XML5645(“指定的实体尚未声明”)。当我传递web服务时,控制台窗口中没有消息。