我在下面的代码中很难搞清楚load()函数的错误。 这段代码基本上做的是从用户通过一个表单(其id为caltag)获取一个日期(在表单中命名为tabledate),并给出一个包含当天所有事件的表。但无论我通过表格提供什么日期,我总能得到今天的时间表。即使jquery部分被完全执行,我也不确定 正如代码所说,提交按钮甚至被禁用。而且,我不知道如何调试js程序。 已经被困了几个小时。任何建议都会有很大的帮助。
$("#caltag").submit(
function(e){
$("#caltag").attr('action', '/table/fetch/');
e.preventDefault();
$("submit").attr('disabled',true);
var calform=$("#caltag");
var values = $("#caltag").serializeArray();
$("#table").load(
$("#caltag").attr('action') + "#table",
values,
function() {
$("#table").hide().fadeIn(1000);
$("#getdate").attr('disabled', false);
});});
查看部分
def table(request): # '/table/fetch/' requests of this view
events=[['_'] * 5 for row in range(5)]
if request.method=='POST':
datestring=request.POST['tabledate']
date=datetime.strptime(datestring,'%m/%d/%Y').strftime('%Y-%m-%d')
else:
date=datetime.today()
eventset=Location.objects.filter(eventdate=date)
for event in eventset:
events[event.x][event.y]=event
return render(request, 'scheduler/table.html',{'events':events,'tabdate':date})
同样的html表单。
<div id="cal" class="span-10">
<form method='POST' id='caltag' action="/table/fetch/">
<p>
<label for="datepicker">tabledate:</label>
<input type="text" id="datepicker" name="tabledate" />
</p>
<input type='submit' id="getdate">
</form>
</div>
答案 0 :(得分:0)
为什么要追加字符串&#34;#table&#34;到网址?
$("#caltag").attr('action'),
var values = $("#caltag").serializeArray();
是否显示有效数据?在下面的一行尝试console.log(values);
以确保生成有效数据
请务必检查所做的实际请求,以确保发送正确的参数并收到正确的内容。
为什么不发送#datepicker
的值? var values = { 'date': $("#datepicker").val() };
答案 1 :(得分:0)
根据.load上的JQuery文档:
如果字符串中包含一个或多个空格字符,则假定第一个空格后面的字符串部分是确定要加载的内容的jQuery选择器。
如果您正在尝试完成这项工作,那么您就错过了空间。