如何显示Rails AJAX JSON响应中的文本-Javascript正在返回[object HTMLDocument]

如何显示Rails AJAX JSON响应中的文本-Javascript正在返回[object HTMLDocument],javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,我有一个Rails应用程序,我在其中创建了一个AJAX/JSON控制器来在视图中进行一些动态HTML更新。我遵循了这个指南: 我这样调用:../related.json?vendor_id=1&budget_id=1,它返回原始HTML部分,我只想更新一组或表行 我的电话是这样的: Rails.ajax({ url: url, type: 'GET', success: function(data) { document.getEle

我有一个Rails应用程序,我在其中创建了一个AJAX/JSON控制器来在视图中进行一些动态HTML更新。我遵循了这个指南:

我这样调用:../related.json?vendor_id=1&budget_id=1,它返回原始HTML部分,我只想更新一组或表行

我的电话是这样的:

    Rails.ajax({
      url: url,
      type: 'GET',
      success: function(data) { 
        document.getElementById("related").innerHTML = "data"
//        alert(data)
      }
    })
如果我在浏览器中手动查看JSON请求,HTML输出与预期一样。然而,当我试图替换HTML,甚至在测试警报中查看数据时,我得到了[object HTMLDocument]。我遵循的指南使用data.html来提供innerHTML,但这对我不起作用。不确定这是否是UJS/JQuery问题


如何使用JSON调用中的原始文本设置DOM元素?

您可以使用JSON.stringify函数将原始文本转换为html:

document.getElementById("related").innerHTML = JSON.stringify(data)

我做了一些挖掘,并在我的控制器中进行了尝试:

format.json { render  partial: 'related' } 
vs


这就做到了——我想我给JSON请求提供了错误的数据——看起来,一旦我给它提供了原始文本与html,它就可以正常工作。

返回{location:null}。我仔细检查了我的JSON源代码——它返回的是纯文本HTML——关于标题等。只是行。我对你的答案投了赞成票,因为它让我更多地考虑了我的控制器方面,这是最终的答案。
format.json { render html: render_to_string( partial: 'related' ) }