0

我正在使用 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...}
4

2 回答 2

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 字符串解码为对象。

希望这可以帮助。干杯

于 2011-07-08T21:39:58.880 回答
0

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

于 2011-07-08T21:40:18.707 回答