我正在对我的Rails应用程序(所有在localhost上运行)进行jQuery AJAX调用,该应用程序正在使用Javascript进行响应。 javascript正在运行,因为我收到了警报。但是,我想读取js.erb文件中的my_var变量。但是,当我尝试查看success函数的data参数时,它将数据视为字符串。所以做data.my_var是未定义的。
js.erb文件
var my_var = "hi";
alert('this ran');
的javascript
$.ajax({
url: "/a/validate?a_id=" + "<%= params[:id] %>",
context: this,
dataType: "script",
data:
{
json_a: JSON.stringify(this.a),
model_to_validate: model,
target_class: target_class,
current_class: current_class
},
success: function (data, textStatus, jqXHR) {
if(!this.orderFormViewed) {
this.orderFormViewed = data.order_block_opened;
}
},
error: function (data) {
console.log("error in ajax validate call");
debugger;
}
})
答案 0 :(得分:1)
如果您只需要获取对象并确保服务器返回json,请尝试将dataType
更改为json
。
答案 1 :(得分:1)
那是因为这正是您告诉它与dataType: "script"
做的事情 - 请查看下面的dataType
选项。脚本在它自己的上下文中运行,所以你不会看到那个变量(我相信)。如果你想要那套,你将需要以不同的方式进行交流。或者,如果您只需要数据发送json
。
https://api.jquery.com/jQuery.ajax/
“script”:将响应评估为JavaScript并将其作为纯文本返回。通过将查询字符串参数“_ = [TIMESTAMP]”附加到URL来禁用缓存,除非缓存选项设置为true。注意:这会将POST转换为GET以获取远程域请求。