在jquery中使用url时不允许的方法

时间:2016-03-25 15:04:00

标签: javascript jquery url

如何在javascript中传递URL内的参数? 我有这样的案例:

$('.btn-delete').click(function () {
    var user_id = $(this).attr('userid');
    console.log(user_id);
    $('#modal-form').attr('action', "{{ url_for('admin.delete_user' , id="' + user_id +'" ) }}");
 });

user_id变量的值为56f52ea551d72027711157d6

如果我这样做,我会得到Method Not Allowed because网址如下:

/admin/users/delete/%27%20+%20user_id%20+%27

我应该如何在这部分传递参数?

$('#modal-form').attr('action', "{{ url_for('admin.delete_user' , id="' + user_id +'" ) }}");
请有人帮帮我吗?

编辑: 我在python中路由admin.delete_user时使用的方法是:

mod_admin.add_url_rule( '/users/delete/<string:id>', methods=['GET'])
def delete_user(self, id):
    mongo.db.users.remove({'_id': ObjectId(id)})
    return redirect(url_for('admin.users'))

模态弹出窗口:

<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog modal-sm">
  <div class="modal-content">
    <div class="modal-header">
      <button type="button" class="close" data-dismiss="modal">&times;</button>
      <h4 class="modal-title"><span class="glyphicon glyphicon-question-sign" aria-hidden="true"></span></h4>
    </div>
    <form id="modal-form" action=" "  method="POST">
    <div class="modal-body">
      <p>Are you sure?</p>
    </div>
    <div class="modal-footer">
          <button type="button" class="btn btn-default btn-sm btn-style" data-dismiss="modal">Cancel</button>
          <button type="submit" class="btn btn-default btn-sm btn-filter-apply btn-style" >Yes</button>
    </div>
    </form>
  </div>
</div>

1 个答案:

答案 0 :(得分:1)

因为模板{{ }}由jinja评估并在浏览器看到它之前转换为字符串,所以您不需要像所示的那样连接所有字符串。 id参数应作为标准关键字参数传递。

$('#modal-form').attr('action', "{{ url_for('admin.delete_user' , id=user_id|string) }}");

您还需要通过更新此

来允许POST次请求到指定的网址
mod_admin.add_url_rule( '/users/delete/<string:id>', methods=['GET', 'POST'])

<强>更新

由于user_id实际上是在 javascript 中定义的,因此这是一个问题,因为jinja无法访问user_id。要解决此问题,您需要以这种方式创建URL:

$('#modal-form').attr('action', "{{ url_for('admin.delete_user') }}" + user_id);