JSON 无法与 Internet Explorer (IE9) 一起使用时遇到问题。我已经在网上搜索了很多,并尝试了不同的解决方案,但似乎没有什么对我有用。所以认为是时候创建一个 SO 帐户并问我的第一个问题了。
我正在使用 JSON 和 jQuery/AJAX 创建一个简单的上传进度指示器 该指示器在 Firefox 和 Chrome 中运行良好
这是我的视图功能:
@never_cache
@admin_required
@render_to("editor/edit_file.html")
def edit_file(request, file_id=None):
if file_id:
try:
file = Document.objects.get(pk=file_id)
form = DocumentForm(request.POST or None, files=request.FILES or None, instance=file)
except Document.DoesNotExist:
form = DocumentForm(request.POST or None, files=request.FILES or None)
else:
dir_id = request.GET.get("dir")
if dir_id:
try:
dir = Directory.objects.get(pk=dir_id)
form = DocumentForm(request.POST or None, files=request.FILES or None, initial ={"directory":dir_id, "available_to":dir.available_to})
except:
form = DocumentForm(request.POST or None, files=request.FILES or None)
else:
form = DocumentForm(request.POST or None, files=request.FILES or None)
result = {}
response = locals()
if request.method == "POST":
if form.is_valid():
file = form.save()
result["status"] = "ok"
result["href"] = reverse("portal.editor.views.files_list", args=[file.directory.pk])
if not request.is_ajax():
response = HttpResponseRedirect(reverse("portal.editor.views.files_list", args=[file.directory.pk]))
else:
result[status] = "error"
if request.is_ajax():
response = HttpResponse(json.dumps(result), mimetype="text/plain")
add_never_cache_headers(response)
return response
这是我的 jQuery 代码:
if ($("#id_edit_form").length > 0) {
$("#id_edit_form").ajaxForm({
type: "POST",
cache: false,
dataType: "json",
beforeSubmit: function (formData, jqForm, options) {
$("#id_overlay").height($(document).height()).show();
},
success: function (response, status, xhr, $form) {
$("#id_overlay").hide();
if (status === "success") {
if (response.status === "ok") {
location.href = response.href;
} else if (response.status === "error") {
for (var item in response.form) {
$("#id_" + item).parent("p").next("p.js_form-error").html(response.form[item][0]);
}
} else { alert(response.result); }
} else { alert("Error status:", status); }
}
});
}
我觉得我什么都试过了。还尝试将 mimetype 更改为“text/plain”,但仍然无效。我在 nginx 服务器上使用 Django 1.3、Python 2.6 和 jQuery 1.6.1。
nginx/mime.types 中的 mimetype 怎么样?我应该在这个文件中添加 json 吗?我真的需要帮助,因为我一直因为这个问题而头疼!
提前致谢