C# ASP.NET:ASPX与ASMXWebMethods处理AJAX
我在Default.aspx上有以下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)
$.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的结果:
对象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服务时,控制台窗口中没有消息。