Я свободно использую NHibernate с WebForms и пытаюсь создать страницу, на которой я разрешаю пользователю публиковать обновление статуса на странице своего профиля, а я использую .asmx WebService для публикации данных в базе данных, а затем возвращаю экземпляр StatusUpdate для страницы, которая будет использоваться jQuery. У меня пара проблем.
1) Прежде всего, когда я возвращаю строку из WebService (я тестировал), текстовое поле, в которое пользователь вводит свой статус, не очищает содержимое. И поскольку страница не обновляется, даже если я вручную очищаю текстовое поле и вставляю что-то еще, она все равно снова передает прежний статус в базу данных. Как мне это исправить?
2) Во-вторых, когда я возвращаю объект StatusUpdate из веб-службы, я не могу отобразить результаты. Как мне грустно, я использую jQuery для вызова AJX в WebService.
Вот мой код:
Страница профиля пользователя Javascript:
var status1 = $("#statusBox").val();
var userID = $("#MainContent_userID").val();
function SetStatus() {
$.ajax({
type: "POST",
url: "http://localhost/Sports/Services/UserWebService.asmx/SetStatus",
data: '{"status": "' + status1 + '", "userID": "' + userID + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
error: OnError
});
}
function OnSuccess(response) {
$("#statusBox").empty();
$("#MainContent_status").html(response.Status).fadeIn(1000);
}
function OnError(request, status, error) {
alert(request.statusText);
}
WebService:
[WebService(Namespace = "Sports.Services")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class UserWebService : System.Web.Services.WebService
{
private IUserSession _userSession;
public ISession Session1
{
get { return NHibernateSessionModule.GetCurrentSession(); }
}
[WebMethod]
public StatusUpdate SetStatus(string status, Guid userID)
{
_userSession = ObjectFactory.GetInstance<IUserSession>();
StatusUpdate update = new StatusUpdate();
update.StatusDateTime = DateTime.Now;
update.StatusLikes = 0;
update.UserID = userID;
update.Status = status;
Session1.SaveOrUpdate(update);
return update;
}
}
Любая помощь будет принята с благодарностью ... Я посмотрел, наверное, 100 страниц, пытаясь найти ответ, и ни одна из них не сработала ..