показать / скрыть работает с JQuery 1.3.2, но не JQuery 1.4 - PullRequest
2 голосов
/ 26 января 2010

У меня есть функция, которая передает данные на мой сервер, а затем удаляет пользовательский интерфейс редактирования и заменяет его обычным пользовательским интерфейсом. Это прекрасно работает под JQuery 1.3.2, но не работает с JQuery 1.4.0. Есть идеи?

function save_edit(point_id) {
  var data = {};
  data.id = point_id;
  $.post("/foo", data, function(responseData) {
    $("#value" + point_id).show();
    $("#editval" + point_id).hide();
  }, "json");
}

Ответы [ 2 ]

7 голосов
/ 26 января 2010

jQuery 1.4 очень требователен к действительному тексту ответа JSON. Следующее недопустимо JSON (и, скорее всего, ваша проблема)

 {foo:'bar'}

 // Strict JSON requires quoted attributes - and the quotes must be doubles!

 {"foo": "bar"}

В этом блоге упоминается обходной путь, использующий вместо этого текст, если вы не можете легко исправить JSON на стороне сервера. Применительно к вашей функции вы получите:

function save_edit(point_id) {
  var data = {};
  data.id = point_id;
  $.post("/foo", data, function(responseText) {
    var responseData = eval("("+responseText+")");
    $("#value" + point_id).show();
    $("#editval" + point_id).hide();
  }, "text");
}

Кроме того, вы можете обработать ошибку, выполнив что-то вроде этого:

function save_edit(point_id) {
  var data = {};
  data.id = point_id;
  var $edit = $("#editval"+point_id);
  var $view = $("#value"+point_id);
  $.ajax({
    method: "POST",
    url: "/foo", 
    data: data, 
    success: function(responseData) {
      $view.show();
      $edit.hide().find('.error').remove();
    },
    error: function(XHR, textStatus, errorThrown) {
      var $err = $edit.find(".error");
      if ($err.length == 0) { $err = $("<div class='error'/>").appendTo($edit); }
      $err.text("Error: "+textStatus);
    }
  });
}   
0 голосов
/ 26 января 2010

jQuery 1.4 с использованием строгого анализа JSON, как указано в заметках о выпуске . Ваши данные действительны в формате JSON?

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