0

我们有一个 javascript 代码,其中所选图像的 url 在 javascript 变量 (src) 中获得。我们想在 Rails 视图中访问 src var 以获取所选图像的 id。通过使用 Ajax 进行了尝试,我们尝试将 url 传递给在控制器中创建的 var 但不知何故 ajax 调用不起作用,因此控制器 var 总是显示 nil价值。我们已经通过 2 种方法尝试了 ajax:

1:

$('#submit').click(function(){
$.ajax({

    type: "POST",

    url: "index",

    cache: false,

    data: "src="+src1,

    success: function(){ 

           alert("DATA SAVED");

     }
});

2:

<%= link_to_remote "submit" , :url=>{:controller=>'album',:action =>'index' ,:var=>'src1'}%>
4

2 回答 2

1

我建议你将你的 Ajax 修改为这样的东西。

var MyTestData = '';
function ajax() {
    return $.ajax({
        url: 'index',
        type: 'POST',
        // make sure you use params[:src] in your controller method to access src1
        data: { src: src1 },
        // You should return your response in JSON format
        success: function(data){ MyTestData = data }
    });
}

因此,现在您从 POST 调用中获得的响应将保存在 MyTestData 变量中。
关于如何从控制器方法发送 json 响应的示例

def index
    # Use the data you passed in the Ajax call
    data = params[:src]
    # Do some processing
    result = something
    # Return the response in json
    render :json => result
end

这是在提交事件上使用 ajax() 函数的方法

$('#submit').click(function(){
    ajax().done(function() {
        // Your MyTestData variable will have whatever details your returned
        // on your POST call. you can test it by logging it in console
        console.log(MyTestData)
      }).fail(function(){
          alert('Ajax call Failed')
    });
});
于 2018-09-06T14:33:04.223 回答
0

确保您的src1变量在范围内。最简单的方法——虽然不是最好的——就是让 src 成为全局的,在你的 script 标签中定义。

当然,全局变量是不受欢迎的,这是有充分理由的,所以一旦这工作起来,看看整理代码并让 src 在本地声明更多,或者至少是命名空间。

此外,变量名为src, 还是src1?

于 2012-06-06T14:48:24.773 回答