Я искал в Google ту же проблему и, похоже, не могу найти никакой помощи. Любая помощь приветствуется. Я создал asmx веб-службы в C #:
[WebMethod]
[ScriptMethod()]
public ListObj GetList(string ListName)
{
SqlConnection DBConnection = new SqlConnection();
DBConnection.ConnectionString = ConfigurationManager.ConnectionStrings["SiteSqlServer"].ToString();
SqlDataReader DBReader = null;
SqlCommand query = new SqlCommand("SELECT Lists.Text, Lists.Value FROM Lists WHERE ListName = '" + ListName + "'", DBConnection);
List<string> text_list = new List<string>();
List<string> value_list = new List<string>();
DBConnection.Open();
DBReader = query.ExecuteReader();
while (DBReader.Read())
{
text_list.Add(DBReader["Text"].ToString());
value_list.Add(DBReader["Value"].ToString());
}
DBConnection.Close();
return new ListObj(text_list, value_list);
}
Я пытаюсь вызвать этот метод с помощью jquery:
<script type="text/javascript">
$(document).ready(function () {
$("#JoeTest").click(function () {
$.ajax({
type: "POST",
url: "/Portals/0/DnnListService.asmx/GetList",
data: {ListName: 'TestList'},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert("Success: " + msg);
},
error: function (msg) {
alert("Failed: "+ msg.status + ": " + msg.statusText);
}
});
});
});
</script>
Если я перейду непосредственно к asmx, я смогу ввести свою строку и получить данные обратно, нет проблем:
http://screencast.com/t/JQmHYoz5c
http://screencast.com/t/xDuMJe7v1A
Однако приведенный выше вызов ajax возвращает ошибку:
{"Message": "Была сделана попытка вызвать метод \ u0027GetList \ u0027 с использованием запроса POST, что недопустимо.", "StackTrace": "at System.Web.Script.Services.RestHandler.GetRawParams (WebServiceMethodData methodData, контекст HttpContext) \ r \ n в System.Web.Script.Services.RestHandler.ExecuteWebServiceCall (HttpContext context, WebServiceMethodData methodData) "," ExceptionType ": 101. System.InvalidOperation
Есть идеи, в чем может быть проблема?