我在HTML页面上有一个设备列表。用户可以从该列表中选择设备,然后单击按钮以提交该设备。
<button class="btn btn-primary" onclick="saveSelectedRow()" type="submit" name="select" value="Select">Select Device</button>
选择行并单击按钮后,将调用以下Javascript。
function saveSelectedRow() {
var data = getSelectedRow();
var csrftoken = getCookie('csrftoken');
$.ajaxSetup({
beforeSend: function (xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
$.ajax({
type: "POST",
url: "/register/",
data: {
csrfmiddlewaretoken: csrftoken, // < here
"data": data,
},
})
}
AJAX请求发布到以下视图:
def register(request):
if request.method == 'POST':
if request.is_ajax():
form = RegisterDeviceForm()
return TemplateResponse(request, 'DeviceRegistration/register_device.html', {'form': form})
此时我想从AJAX请求中获取数据并使用它来填充请求模板的表单字段。我可以设置断点并观察以下两行执行:
form = RegisterDeviceForm()
return TemplateResponse('DeviceRegistration/register_device.html', {'form': form})
但没有任何反应。我一直在阅读,我可能需要呈现HTML,然后使用我的AJAX请求的.success回调来更改HTML?但是,我无法让这个工作。如果我稍微更改上面两行的两个if语句,检查另一个按钮的名称,这些行完美地执行并使用表单呈现模板。但是使用AJAX请求没有相同的功能。
任何帮助都将不胜感激。
编辑#1:
我在request()视图中更改了一些代码:
form = RegisterDeviceForm()
return render_to_response('DeviceRegistration/register_device.html', {'form': form})
并为Ajax调用添加了一个成功方法:
$.ajax({
type: "POST",
url: "/register/",
data: {
csrfmiddlewaretoken: csrftoken, // < here
"data": data,
},
success : function(data) {
alert("success!");
}
})
当我检查success函数中的数据变量时,它包含我想要呈现的HTML。我假设有可能让我的Django Python脚本呈现视图,但似乎我需要让javascript做到这一点?
编辑#2:
我想新问题已成为我如何才能拥有此代码:
<form method="POST" action="/register/">
{% csrf_token %}
<button class="btn btn-primary" onclick="getSelectedRow()" type="submit" name="select" value="Select">
Select Device
</button>
</form>
从onclick =&#34; getSelectedRow()&#34;返回数据到/ register / page?上面的代码成功转到注册页面,但我无法访问用户选择的数据。