我很难找出下面代码中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>发布于 2012-02-12 02:54:44
为什么要在url后面加上字符串"#table“?
$("#caltag").attr('action'), var values = $("#caltag").serializeArray();是否显示有效数据?尝试以下行上的console.log(values);以确保生成有效的数据
确保检查发出的实际请求,以确保发送了正确的参数并接收了正确的内容。
为什么不直接发送#datepicker的值呢?var values = { 'date': $("#datepicker").val() };
发布于 2012-02-12 03:10:36
根据.load上的JQuery文档:
如果字符串中包含一个或多个空格字符,则假定第一个空格后面的字符串部分是用于确定要加载的内容的jQuery选择器。
如果这就是你想要实现的目标,那么你就错过了空间。
https://stackoverflow.com/questions/9242974
复制相似问题