Internet Explorer (IE9) で JSON が機能しないという問題があります。私はウェブをたくさん検索し、さまざまな解決策を試しましたが、何もうまくいかないようです。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); }
}
});
}
私はすべてを試したような気がします。また、MIME タイプを「text/plain」に変更しようとしましたが、それでも機能しませんでした。nginxサーバーでDjango 1.3、Python 2.6、およびjQuery 1.6.1を使用しています。
nginx/mime.types の mimetype はどうですか? このファイルに json を追加する必要がありますか? 私はこの問題のために頭を引き裂かれているので、これについて本当に助けが必要です!
前もって感謝します