我在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-page网址时,没有任何反应。方法的主体在.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 +网页返回整个页面(从!DOCTYPE到/ html)。
JSON +网页返回一个目标:
Object d:
ObjectID: 2
INN: 994542214
Name: "Microsoft"
__type: "WSS_AJAX_SQL.Company"
__proto__: Object
__proto__: Object
感谢。
答案 0 :(得分:0)
是的,这是可能的。 在ASPX页面中,声明[webmethod]:
public partial class Pagename: System.Web.UI.Page
{
[WebMethod]
public static Company GetCompany(string companyName)
{
......
}
...
}
请更改:
dataType: "xml",
为:
dataType: "json",
请更改:
data: { companyName: compName },
为:
JSON.stringify({ companyName: compName }),
请注意[WebMethod]方法需要声明为static
。
在您的AJAX成功方法中,请更改:
$('#txtBoxInn').val(jQueryXml.find('INN').text());
为:
$('#txtBoxInn').val(data.d.INN);