У меня есть веб-метод, возвращающий объект, и мне трудно получить доступ к объекту, возвращенному методом jQuery Ajax. Я хотел бы получить доступ к HighlightResults и отобразить в ретрансляторе. Я продолжаю получать ошибку: произошла ошибка обработки запроса. Внутренняя ошибка сервера.jQuery ajax webmethod error
Мой объект:
public class SearchResults
{
internal SearchResults()
{
}
public virtual IQueryable<Document> DocumentResults { get; internal set; }
public virtual IQueryable<Page> PageResults { get; internal set; }
public virtual IQueryable<Word> WordResults { get; internal set; }
public ICollection<String> HighlightResults { get; internal set; }
public int QueryTime { get; internal set; }
public int TotalResults { get; internal set; }
}
И моя Аякса функция:
var query = String($('[id$=txtSearch]').val());
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Viewer.aspx/GetHighlightResults",
dataType: "json",
data: JSON.stringify({docID: docid, query: query,
pageNumber: 1, resultsPerPage: 10}),
success: function (response) {
alert("Success!!");
var data = response.d;
// none of these are displaying....
alert(String(data));
alert(String(data.HighlightResults));
alert(String(data.HighlightResults[0]));
$.each(data, function(index, item) {
alert(item);
alert(item.HighlightResults);
$("#search-results").append("<b>" + item + "</b>");
})
},
error: function (xhr, status, error) {
alert("responseText=" + xhr.responseText +
"\n textStatus=" + status + "\n errorThrown=" + error);
}
});
И, наконец, мой веб-метод:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static SearchResults GetHighlightResults(String docID, String query,
String pageNumber, String resultsPerPage)
{
SearchResults results = null;
try
{
ArchiveSearcher searcher = new ArchiveSearcher();
if (!String.IsNullOrEmpty(query) && Convert.ToInt32(docID) > 0 &&
Convert.ToInt32(pageNumber) > 0 && Convert.ToInt32(resultsPerPage) > 0)
{
results = searcher.SearchDocument(Convert.ToInt32(docID), query,
Convert.ToInt32(pageNumber), Convert.ToInt32(resultsPerPage));
}
}
catch (Exception ex)
{
// Log the exception.
ArchiveViewer.Logic.ExceptionUtility.LogException(ex, "GetSearchResults in Viewer.aspx.cs");
}
return results;
}
Помощь ценится.
EDIT: Если я вернуть ICollection<String> Highlight
результаты из веб-метод, я могу получить доступ к нему с помощью функции JQuery Ajax с помощью:
success: function (response) {
var data = response.d;
$.each(data, function(index, item) {
alert(item);
....
Я думаю, что моя проблема связана с тем, как я достигаю весь SearchResults объект. Любые идеи относительно того, что я делаю неправильно?
EDIT 2: Я прокомментировал все в моей функции успеха ajax и все еще не удается. Поэтому проблема заключается в возврате класса. Есть идеи?
попал ли он в WebMethod при отладке? – Zaki
Да, и я что-то возвращаю. Но он не атакует («Успех !!»); Вместо этого я получаю ошибку. – Tums
это ошибка 500? – Zaki