0

点击按钮我有

(function() {
$("#btnStep2").click(function() {

    number = $('#btnStep2').attr('number');
     var dataString='number='+number+'&reserved='+$('#rd'+number).is(':checked')+'&environment=qa1';
    alert(dataString);
$.ajax({
    type: "PUT",
    url: "/tnrepos/"+number,
    contentType: "application/text; charset=utf-8",
    beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
    data: dataString, 
    success: function(data){ 
        alert("update successfully");

    }});
    return false;
});
});

在服务器上看到

    Started PUT "/tnrepos/12345" for 127.0.0.1 at 2013-03-15 11:38:03 -0700
Processing by TnreposController#update as */*
  Parameters: {"id"=>"12345"}

但我没有看到其他参数传递..

在控制器中我打印参数

"action"=>"update", "controller"=>"tnrepos", "id"=>"12345"}

为什么不存在其他参数?我在 Firefox 和 chrome 上进行了测试。

4

1 回答 1

0
$.ajax({
    type: "PUT",
    url: "/tnrepos/" + number,
    contentType: "application/text; charset=utf-8",
    beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
    data: {data : dataString} ,
    success: function(data){ 
        alert("update successfully");

    }});
    return false;
});
});

您在上面看到了数据的使用:“{data : dataString}”。

现在,您的 params[:data] 将拥有 dataString。

我建议将它们传递为 "{number : number , reserved : $('#rd'+number).is(':checked') } 并在控制器上使用它们的名称访问它们,例如 params[:number]、params [:reserved] 等等。

试试看,让我知道!

于 2013-03-15T22:52:27.820 回答