フォームで ajax を使用する必要があります。しかし、$.ajax の成功関数は、ファイルをサポートしていないようです。今、私はどのようにajaxを使用できるか知りたいです。フォームを返すとき(フォームが有効でないとき)と、ダウンロードのためにクライアントにストリームを返すとき(フォームが有効なとき)です。私はグーグルをしましたが、 $.get でうまくいくようです。しかし、私にはフォームがあり、ポストを使用する必要があります。誰か助けてくれませんか?どうもありがとう。
以下の関数では、ストリームは機能しません。
$('#sendButton').click(function(e) {
e.preventDefault();
var temp = $("#mainForm").serialize();
$.ajax({
type: "POST",
data: temp,
url: 'main/',
success: function(data) {
...
}
});
});
私のviews.py:
def mainFunc(request):
if request.is_ajax():
form = mainForm(request.POST)
if request.method == 'POST':
if form.is_valid():
result = ""
string_to_return = webservice._result
file_to_send = ContentFile(string_to_return)
response = HttpResponse(file_to_send,'application/x-gzip')
response['Content-Length'] = file_to_send.size
response['Content-Disposition'] = 'attachment; filename="somefile.tar.gz"'
return response
else:
form = mainForm()
return render_to_response('main.html', RequestContext(request, {'form':form}))
else:
return render_to_response("ajax.html", {}, context_instance=RequestContext(request))