【发布时间】:2009-11-19 22:03:16
【问题描述】:
在这整个晚上,看不到我错过了什么:
JS:
$(document).ready(function() {
$("#form").submit(function () {
var txt = $('textarea[name=text]').val();
$.ajax({
type: "POST",
url: "/parse_text/",
data: {"text": txt},
dataType: "text",
success: function(h) {
alert('ok');
},
error: function() {
alert('failed');
}
});
});
});
还有 django 代码:
def parse_text(request):
return HttpResponse("hello", mimetype="text'/plain")
我无法让它触发成功方法。使用 firebug 我可以看到 django 返回“hello”,状态为 200。
我也尝试更改为 json(虽然我真正想要的是返回一个 html 表)。
在js中:
dataType: "json",
在视图中:
return HttpResponse('[{"hello": "hello"}]', mimetype="application'/json")
现在返回 [{"hello": "hello"}] 和 200 状态。
我到底做错了什么!?
最终工作代码:
$(document).ready(function() {
$("#form").submit(function () {
var txt = $('textarea[name=text]').val();
$.ajax({
type: "POST",
url: "/parse_text/",
data: {text : txt},
success: function(html) {
$("#actions").html(html);
},
error: function() {
alert("fail");
}
});
return false;
});
});
在视图中:
def parse_text(request):
html = ''
text = request.POST['text']
... generated some html based on the text ...
return HttpResponse(html)
【问题讨论】:
-
您是否安装了 Firefox 和 FireBug(如果没有,请同时安装)?打开 FireBug,转到 Console 或 Net 面板,提交您的表单并查看提交的内容和返回的内容。另外,在开发服务器中运行你的 django 应用程序,看看请求是否进入了正确的视图。也许做这些事情会给你一个提示。也就是说,我真的看不出你在这里做错了什么......