У меня есть этот АЯКС код на Default.aspx:ASP.NET: ASPX против ASMX WebMethods обрабатывать 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());
}
});
Когда я прохожу URL службы веб в качестве параметра, все работает отлично. Когда я передаю URL-адрес aspx-страницы, ничего не происходит. Тела методов идентичны в файлах .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 Service (который работает, как я хочу):
<Company xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/"> <ID>2</ID> <Name>Microsoft</Name> <INN>994542214</INN> </Company>
XML + Веб-страница возвращает всю страницу (от! DOCTYPE до/html).
JSON + Веб-страница возвращает objest:
Object d:
ObjectID: 2
INN: 994542214
Name: "Microsoft"
__type: "WSS_AJAX_SQL.Company"
__proto__: Object
__proto__: Object
Спасибо.
У меня есть этот атрибут, но он не работает. Возможно ли, что проблема заключается в том, что я пытаюсь достичь той же страницы, на которой расположен код на стороне клиента? –
Нет, это не проблема. Не могли бы вы рассказать код на стороне сервера? –
Я добавил его к вопросу. –