我有一个简单的表单提交与ajax,但它一直给我一个错误.所有错误都是“错误”.没有代码,没有描述.没有什么,当它失败时我发出警报.
使用jQuery的Javascript:
$(document).ready(function(){ $(".post-input").submit(function(){ var postcontent = $(".post-form").val(); if (postcontent == ""){ return false; } $(".post-form").attr("disabled","disabled"); $.ajax({ url: '/post',type: 'POST',data: {"post-form": postcontent},dataType: json,success: function(response,textStatus,jqXHR) { alert("Yay!"); },error: function(jqXHR,errorThrown){ alert(textStatus,errorThrown); } }); }); });
HTML:
<form class="post-input" action="" method="post" accept-charset="utf-8"> <textarea class="post-form" name="post-form" rows="1" cols="10" onFocus="this.value='';return false;">What are you thinking about...</textarea> <p><input class="post-submit" type="submit" name = "post.submitted" value="Post"></p> </form>
如果那里没有问题,那么服务器端(金字塔):
def post(request): session = Session() user = authenticated_userid(request) postContent = request.POST['post-form'] if not postContent == '': session.add(Activity(user.user_id,postContent,None,None)) return {} return HTTPNotFound()
更新:
在使用firebug进行一些调试之后,我发现post请求主体只包含post.submitted = Post,而不是{“post-form”:postcontent}的预期结果.
解决方法
根据
jQuery文档,您必须声明数据类型:
$.ajax({ type: 'POST',url: url,data: data,success: success,dataType: dataType });
另外,查看服务器端代码,实际上并不想发布JSON格式的数据.这个{“post-form”:postcontent}是JSON格式的数据.你真正想做的是发送TEXT或HTML.看起来它是表格数据,我猜想TEXT.
试试这个:
$.ajax({ url: '/post',data: 'post-form='+postcontent,dataType: 'text',jqXHR) { alert("Yay!"); },errorThrown){ alert(textStatus,errorThrown); } });