gpt4 book ai didi

javascript - 在javascript中将rails变量传递给ajax

转载 作者:行者123 更新时间:2023-11-30 08:25:24 25 4
gpt4 key购买 nike

我是 Rails 的新手。我正在尝试使用 ajax 并调用 Controller 方法。 Controller 方法创建一个实例变量,我认为它可用于 ajax 中的成功回调。

但是,每当我运行代码时,JS 控制台都会给出“test_array is null”错误。请提出解决方案并深入了解正在发生的事情。代码如下。

我已经在互联网(包括 SO)上彻底研究了这个问题,但似乎没有一个答案适合我的问题。

sentiscores_controller.rb

def render_phrase
@tag_cloud_temp = [{text: 'Hello', weight: 1000},{text: 'World!', weight: 1100}]
end

index.html.erb

$.ajax({
type: 'GET',
url: '/sentiscores/render_phrase',
data: {'senti_score': 5},
success: function(){
var test_array = <%= raw @tag_cloud_temp.to_json%>;
console.log(test_array[0]['text']);
},
error: function(exception){
console.log("Error! : "+exception);
}
})

实际的html源代码如下所示

 $.ajax({
type: 'GET',
url: '/sentiscores/render_phrase',
data: {'senti_score': 5},
success: function(){
var test_array = null;
console.log(test_array[0]['text']);
},
error: function(exception){console.log("Error! : "+exception);}
})

最佳答案

在您的 Controller 中,您需要将 JSON 呈现返回给 AJAX 调用,如下所示:

# controller method    
@tag_cloud_temp = [{text: 'Hello', weight: 1000},{text: 'World!', weight: 1100}]

render json: {
tag_cloud_temp: @tag_cloud_temp
}

然后,在您的 AJAX 调用中,您需要从 render 接收 data,如下所示:

// in ajax call
success: function(data) {
console.log(data);
}

如果查看 data 对象,您应该会看到来自 Controller 的信息。

关于javascript - 在javascript中将rails变量传递给ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46429149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com