JQuery超级基础知识。当我看到数据变量时,为什么我无法访问data.html?

时间:2011-07-08 21:30:29

标签: jquery ruby-on-rails xmlhttprequest ujs

我正在使用JQuery-ujs + Rails。而且我对问题的解决方案只有90%但是难倒了:

  1. 我在屏幕上看到了成功
  2. 我看到数据
  3. 我看不到data.html =>为什么??我该如何访问?我在日志中的哈希中看到了它。
  4. 以下是我要处理的内容:

    $(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 个答案:

答案 0 :(得分:1)

这是因为您的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字符串解码为object。

希望这会有所帮助。干杯

答案 1 :(得分:0)

html也是一种方法。请改用data.html()。