Вопрос: Я создаю приложение, в котором у меня есть список выбора html, из которого я выбираю категорию, и из этой категории я получаю элементы и изображения с помощью ajax webmethod.500 Внутренняя ошибка сервера в asp.net
Обзор проблемы: Я столкнулся со многими 500 ошибками в ajax linq до sql и исправил его. Но теперь я работаю над ado.net-приложением, и проблема, с которой я столкнулся, - это когда я выбираю категорию из списка выбора (catlist), она показывает мне ошибку здесь error: function (xhr) { alert(xhr.status);}
.
[ArgumentException]: Unknown web method elist. Parameter name: methodName at System.Web.Script.Services.WebServiceData.GetMethodData(String methodName) at System.Web.Handlers.ScriptModule.OnPostAcquireRequestState(Object sender, EventArgs eventArgs) at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) .
Как исправить эту ошибку. Я подумал, что кратко опишу свой вопрос.
default.aspx Код Обзор:
Ниже мой HTML
<table>
<tr>
<td>
<select id="catlist" runat="server" onchange="getImageUrl()"></select>
</td>
<td></td>
</tr>
<tr>
<td>
<img id="imgload" width="180" height="100" src="" alt="No Image Found" />
</td>
<td>
<ul>
<li>Description</li>
<li>Loreum IspumLoreum IspumLoreum IspumLoreum IspumLoreum IspumLoreum IspumLoreum Ispum</li>
</ul>
</td>
</tr>
</table>
Ниже мой Javascript Функция
function getImageUrl() {
var catid = $("#catlist")[0].value;
$.ajax({
url: "Default.aspx/elist",
data: { catId: catid },
contentType: "Application/json; charset=utf-8",
responseType: "json",
method: "POST",
success: function (response) {
alert(response.d);
},
error: function (xhr) {
alert(xhr.status);
},
Failure: function (response) {
alert(response);
}
});
}
Default.aspx.cs Код Обзор:
Ниже мой пользовательский класс
public class events
{
public string EVE_NAME { get; set; }
public string EVE_IMG_URL { get; set; }
public string EVE_DESCRIPTION_SHORT { get; set; }
}
Ниже Datatable метод
private static DataTable dt2(int catId)
{
DataTable dataTable = new DataTable();
SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=EVENT;Persist Security Info=True;User ID=sa;Password = 123");
string query = "sp_view";
SqlCommand cmd = new SqlCommand(query, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@catID", SqlDbType.Int).Value = catId;
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dataTable);
return dataTable;
}
Ниже является WebMethod
[WebMethod]
private static List<events> elist(int catId)
{
List<events> eve = new List<events>();
eve = (from DataRow row in dt2(catId).Rows
select new events
{
EVE_NAME = row["EVE_NAME"].ToString(),
EVE_IMG_URL = row["EVE_IMG_URL"].ToString(),
EVE_DESCRIPTION_SHORT = row["EVE_DESCRIPTION_SHORT"].ToString(),
}).ToList();
return eve;
}
Примечание: имена столбцов базы данных и события имена свойств класса одинаковы ,
Я отмечаю, что ваш метод 'elist' является закрытым. Я не могу сказать, что я многое сделал сам, но, возможно, это проблема? Что произойдет, если вы сделаете это общедоступным? –
Вы можете быть заинтересованы в этой теме: http://stackoverflow.com/questions/18244696/how-to-return-json-with-asp-net-jquery, потому что собственное поведение WebMethod возвращает XML, и вы, кажется, хотите вместо этого Джонсон. –
@JonSkeet Да, моя первая ошибка - это не сделать мой метод общедоступным. –