2011-11-25 81 views
0

我想从控制器返回数据并将其附加到一个div。下面是我的代码有:如何获取从Ajax返回的数据附加到div? - JQuery + Rails的3.1

$(this).parent().find('list').append(__WHAT_GOES_HERE?__); 

我应该如何获得数据在JQuery中使用AJAX追加?我知道这是一个非常基本的问题 - 我是新来的JS :(

PS让我们假设该控制器的路径为/ajax_get_items

回答

2

我想,你希望将其加载到一个类,所以list会是.list

喜欢的东西:

$.ajax({ 
    url: "/ajax_get_items", 
    type : "POST", 
    data : { // If you need data to be posted 
     id : 12, 
     num : "test" 
    }, 
    success : function(result){ 
     $(this).parent().find('.list').append(result); 
     // If a JSON object is returned, use the following line: 
     // $(this).parent().find('.list').append(result.html); 

    } 
}) 

或者,如果你想只加载数据,而无需PARAMS(GET方法):

$(this).parent().find('.list').load("/ajax_get_items"); 

如果您想了解红宝石轨和jQuery的更多信息:http://brandonaaron.net/blog/2009/02/24/jquery-rails-and-ajax

0

这是你所需要的:不同的地方,你不能“这”在这种情况下使用

$.ajax({ 
    url: '/ajax_get_items', 
    success: function(data) { 
    $('#selector').parent().find('list').append(data) 
} 
}); 

注此调用时,或者你可能最终得到意想不到的效果

+0

您的解决方案预计数据将处于正确的HTML标记中,这很难从后端系统获得。这必须在JS的前端完成。 – Arindam

+0

这就是OP询问的内容,并且在rails中这些并不是你很难得到的,它很容易获得有效的html。如果需要进行任何操作,或假定使用JSON对象,则仍然可以在函数 –

+0

True中操作数据。你可以得到JSON返回,但仍然不是HTML。从控制器返回html是没有意义的。它只应该以某种标准符号返回数据,即JSON。但根据需要将数据格式化是数据消费者的责任。这就是真正实现术语分离的方式,这样你就可以在其他地方使用相同的功能,只返回数据而不是格式化的HTML,新的调用者可能没有要求 – Arindam

0
$('somelink').click(function(e) { 
    e.preventDefault(); 
    $.ajax(url, data, success:function(resData) { 
    resultSet = resData.extract(resData); 
    } 
} 

基本上这部分处理来自Ajax调用和响应10应该从返回的数据中构建您所需的html。

在此之后,你可以简单地说

$(this).parent().find('list').append(resultSet);

但这是假设的主要工作是在功能extract与返回的数据来完成。 在那里你建立你的列表(或其他)html是需要的。

相关问题