JQuery супер основы.Почему я не могу получить доступ к data.html, когда вижу переменную данных? - PullRequest
0 голосов
/ 09 июля 2011

Я работаю с JQuery-ujs + Rails. и я на 90% к решению проблемы, но поставлен в тупик:

  1. Я вижу успех на экране
  2. Я вижу данные
  3. Я не вижу data.html => почему ?? Как я могу получить доступ к этому? Я вижу это в хэше ниже в моих журналах.

Вот с чем я имею дело:

$(function(){
  $('#add-mod-form').bind('ajax:success', function(evt, data, status, xhr){
      alert("Success!");
      console.log(data.success);
      console.log(data.html);
      console.log(xhr.responseText);
      console.log(evt);
      console.log(data);
      console.log(status);
      console.log(xhr);

//works!
      $('#page').append(xhr.responseText);

//does not work!
      $('#page').append(data.html);

  });
});

Вот мои логи:

undefined
undefined
{"success":true,"html":"<div class=\"extrafield\" id=\"extrafield_73\">\n<div class='trash_can'>Nala <a href=\"#\" data-confirm=\"Are you sure you want to delete Nala?\" data-href=\"/delete_extra_field/73\"><img alt=\"Trash\" src=\"http://\" /></a></div>\n</div>\n"}
Object { type="ajax:success", timeStamp=1310160257936, more...}
{"success":true,"html":"<div class=\"extrafield\" id=\"extrafield_73\">\n<div class='trash_can'>Nala <a href=\"#\" data-confirm=\"Are you sure you want to delete Nala?\" data-href=\"/delete_extra_field/73\"><img alt=\"Trash\" src=\"http://\" /></a></div>\n</div>\n"}
success
Object { readyState=4, responseText="{"success":true,"html":"<div class=\"extrafield\" id=\"extrafield_73\">\n<div class='trash_can'>Nala <a href=\"#\" data-confirm=\"Are you sure you want to delete Nala?\" data-href=\"/delete_extra_field/73\"><img alt=\"Trash\" src=\"http://\" /></a></div>\n</div>\n"}", more...}

Ответы [ 2 ]

1 голос
/ 09 июля 2011

Это потому, что ваш data является строкой json , а не объектом. Вы должны сделать:

  $('#add-mod-form').bind('ajax:success', function(evt, data, status, xhr){
      data = $.parseJSON(data); //This converts 'data' from json string to object
      alert("Success!");      
      //The rest of your code
  });

Обратите внимание, что $.parseJSON декодирует из строки json в объект.

Надеюсь, это поможет. Приветствия

0 голосов
/ 09 июля 2011

также html - это метод. Вместо этого используйте data.html ().

...