Как заставить DOM-модификации, выполненные в случае успеха, сохраняться в вызове jQuery.Ajax ()? - PullRequest
0 голосов
/ 21 июня 2010

Я получаю объект JSON из webMethod с помощью вызова ниже, и я устанавливаю некоторые значения textBox на основе атрибутов возвращаемых объектов.

Проблема в том, что на мгновение мои текстовые поля заполняются, но затем они немедленно возвращаются к пустым.

Я сделал ошибку или не могу модифицировать элементы DOM в функции успеха?

Спасибо.

   var ajaxCallOptions = {
              type: "POST",
              contentType: "application/json; charset=utf-8",
              url: "/JQuery/Chapter16-AJAX/PersonWebServices.asmx/GetPerson",
              context:  document.body,
              data: JSONObject,
              dataType: "json",
              success: function(data, textStatus, XMLHttpRequest){
                  var myPerson = data;

                  jQuery("#"+"<%=txtFirstName.ClientID %>").val(myPerson.d.FirstName);
                  jQuery("#"+"<%=txtLastName.ClientID %>").val(myPerson.d.LastName);

              },
              error: function(XMLHttpRequest, textStatus, errorThrown){
                alert('Error: '+textStatus);
              } };

   jQuery.ajax(ajaxCallOptions);

Возвращенные данные:

Дополнительное примечание: {"d": {"__ type": "BusinessObjects.Person", "FirstName": "Burak", "Id": "001", "LastName": "Ozdogan", "Department": "Информационные технологии"}}

и это функция, которая обязана щелкнуть событие в форме:

<asp:Button ID="btnSearch" runat="server" Text="Search" OnClientClick="loadPerson($('.personId'));"/>

Ответы [ 3 ]

2 голосов
/ 21 июня 2010

Если ваш $.ajax() запущен с помощью отправки, вероятно, происходит поведение по умолчанию и перезагрузка страницы.

Используйте return false; или event.preventDefault() в конце вашего обработчика отправки, если этоcase.

$('.mySubmitButton').submit(function() {
    // Send ajax request
    return false;
});

или:

$('.mySubmitButton').submit(function( event ) {
    event.preventDefault()
    // Send ajax request
});

Этот же метод используется для ссылок, созданных из элементов <a href=''>, когда вы хотите предотвратить поведение по умолчанию, или для любого другого элемента, которыйимеет поведение по умолчанию в этом отношении.

0 голосов
/ 21 июня 2010

Спасибо, Патрик.

Сработало после этой модификации:

<asp:Button ID="btnSearch" runat="server" Text="Search" 
OnClientClick="loadPerson($('.personId'), event); return false;"/>
0 голосов
/ 21 июня 2010

Я предлагаю использовать FireBug или аналогичный для проверки содержимого, возвращаемого вызовом AJAX.В противном случае попробуйте предупредить данные, которые возвращаются.

Получены ли данные ожидаемых данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...