如何通过 jQuery 在 POST 请求中传递动态 URL?
How can I pass a dynamic URL in a POST request via jQuery?
我正在尝试这样做:
<script>
$(document).ready(function() {
$(".delete_button").click(function() {
var id = $(this).attr('id');
$.ajax({
type: "POST",
url: "/accounts/{{ request.user.username }}/profile_listview",
data: { entryname:id },
success: function(response){
alert(response.success);
}
});
return false;
});
});
</script>
但我需要找到一个解决方案来传递动态 URL,因为 Django 模板变量在这种情况下不起作用。我怎样才能做到这一点?
如果您需要传递的变量始终相同(例如 request.user.username
对一个用户始终相同),您可以渲染一个 javascript 对象,其中包含您需要的所有选项访问构建您的 url。
<script type="text/javascript">
var __MYAPP_CONFIG__ = {
username: JSON.stringify({{ request.user.username }})
};
</script>
然后,在您的脚本中,您可以通过访问 my_app.username
.
来引入该动态部分
$.ajax({
# ...
url: "/accounts/" + window.__MYAPP_CONFIG__.username + "/profile_listview",
# ...
});
我喜欢这种方法的地方在于它(在我看来)为随时间增长的项目提供了一个相当通用的结构。对于足够大的站点,我大多数情况下最终只有一个配置对象,其结构如 my_project.my_app1.options
、my_project.my_app2.options
等。这样一来,所有可能需要它的应用程序都已命名空间,并且我有一个中心位置,我可以在其中放置知道找到我的选择。
也许您可以使用 html5 的数据属性,例如:
<a class="delete_button" ... data-url="{% url 'my_url_name' username=request.user.username %}">Delete</a>
这样更干。
然后,在脚本中,您将该数据用作 url 到 post 到:
$.ajax({
type: "POST",
url: $(this).data('url'),
data: { entryname:id },
success: function(response){
alert(response.success);
}
});
我正在尝试这样做:
<script>
$(document).ready(function() {
$(".delete_button").click(function() {
var id = $(this).attr('id');
$.ajax({
type: "POST",
url: "/accounts/{{ request.user.username }}/profile_listview",
data: { entryname:id },
success: function(response){
alert(response.success);
}
});
return false;
});
});
</script>
但我需要找到一个解决方案来传递动态 URL,因为 Django 模板变量在这种情况下不起作用。我怎样才能做到这一点?
如果您需要传递的变量始终相同(例如 request.user.username
对一个用户始终相同),您可以渲染一个 javascript 对象,其中包含您需要的所有选项访问构建您的 url。
<script type="text/javascript">
var __MYAPP_CONFIG__ = {
username: JSON.stringify({{ request.user.username }})
};
</script>
然后,在您的脚本中,您可以通过访问 my_app.username
.
$.ajax({
# ...
url: "/accounts/" + window.__MYAPP_CONFIG__.username + "/profile_listview",
# ...
});
我喜欢这种方法的地方在于它(在我看来)为随时间增长的项目提供了一个相当通用的结构。对于足够大的站点,我大多数情况下最终只有一个配置对象,其结构如 my_project.my_app1.options
、my_project.my_app2.options
等。这样一来,所有可能需要它的应用程序都已命名空间,并且我有一个中心位置,我可以在其中放置知道找到我的选择。
也许您可以使用 html5 的数据属性,例如:
<a class="delete_button" ... data-url="{% url 'my_url_name' username=request.user.username %}">Delete</a>
这样更干。
然后,在脚本中,您将该数据用作 url 到 post 到:
$.ajax({
type: "POST",
url: $(this).data('url'),
data: { entryname:id },
success: function(response){
alert(response.success);
}
});