获取 URL 字段的值并用于 Ajax 脚本中的 POST 数据 - Django

Fetch URL Fields' Values and Use for POST Data in Ajax Script - Django

我有一个表单 (https://localhost:8000/generate/),其中包含一个文本字段和一个生成 Django 对象的下拉菜单,来自该对象的数据显示在成功页面上。成功页面 URL 看起来像这样:

https://localhost:8000/success/?name=bob&theme=music&obj=some-cool-random-slug

在这个成功页面上,我有一个按钮,它基本上应该执行 "redo"(执行与生成页面相同的形式 post)并在同一成功页面上重新显示结果。用户还可以单击另一个按钮返回到原始生成页面并填写该表单。

在我的 Django 视图中,我想用这样的东西获取 URL 数据:

name = request.GET.get('name', '')
theme = request.GET.get('theme', '')

...然后使用 Ajax 将这些数据重新提交到 Django 视图(如上所述)。

原则上,我该怎么做? 正如@levi 指出的那样,post将数据发送到 /generate/ 视图是做这个。 我希望生成 form/view 工作流按预期运行(访问 URL /generate/,例如生成表单时),但当从成功中单击按钮时页。

Ajax

$(".redo").click(function() {

    // fetchQueryString() defined elsewhere
    var name = fetchQueryString['name'];
    var theme = fetchQueryString['theme'];

    $.ajax({
        type: 'post',
        url: '/generate/',
        data: { 
            name: name,
            theme: theme
        },
        success: function(response) {
            console.log("ajax succeeded");
            location.reload();
        },
        error: function(response) {
            console.log("ajax failed");
        },
    });
});

更新

我大部分时间都在用这个。我已经在上面编辑了我的 Ajax 脚本。现在唯一不起作用的是在调用 "redo" 操作后,URL 不会更新新数据,尽管当 运行 从一开始的表单结果为正确的URL。如果视图本身使用新数据设置 URL,我不确定为什么 URL 没有更新。

我该怎么做?

Post Ajax 脚本中的数据到 /generate/.

Ajax

$(".redo").click(function() {

    // fetchQueryString() defined elsewhere
    var name = fetchQueryString['name'];
    var theme = fetchQueryString['theme'];

    $.ajax({
        type: 'post',
        url: '/generate/',
        data: { 
            name: name,
            theme: theme
        },
        success: function(response) {
            console.log("ajax succeeded");
            location.reload();
        },
        error: function(response) {
            console.log("ajax failed");
        },
    });
});

fetchQueryString() 脚本是此处的修改版本:

How can I get query string values in JavaScript?