2010-06-29 3 views
0

я немного застряли со следующей ситуацией:Jquery Ajax вызов с Джанго

Я использую вызов AJAX для отправки формы, я использую значение формы, чтобы сделать некоторые «запрос» в Джанго. Когда это произошло, и я получил правильный запрос, он доставляет мне ответ HttP в виде csv. Я установил заголовки и все, что нужно, чтобы получить окно «сохранить файл как» ... к сожалению, этого не происходит, потому что вызов ajax помещает ответ внутри div.

Это код:

if (vsc=='True'){ 
    ajax_loader(); 
// add pdf, csv $.ajax (todo) 
     $.ajax({ 
    type: "POST", 
     url: "./test", 
      dataType: 'text', 
    success: test, 
    data: {host: ho, log: lo, severity: se, datetimestart: dts, datetimeend: dte, enabled: ena, csv: vsc, pdf: fdp} 

     }); 

Так внутри этой АЯКС функции выполнения вызова URL ./test. Внутри этого url я делаю некоторую фильтрацию объектов, и я создаю объект ответа HTTP и отправляю его обратно. При успехе мне хотелось бы получить «сохранить файл как», но в данный момент я не знаю, как это сделать. Мне удалось показать ответ в div на моей странице html ./test, но «сохранить файл как» никогда не появляется.

мой взгляд Джанго:

def export_csv(request,queryset) 
# do some filtering on queryset and create a csv 
response = HttpResponse(''.join(csv_export), mimetype='text/csv') 
response['Content-Disposition'] = 'attachment; filename=customreportexport.csv' 
return response 

Это мой взгляд, все должно быть нормально, я думаю, что это на самом деле, что Ajax вызов ... на «успех» я должен сделать что-то такое, что всплывающие окна, как «сохранить file as ', только я не знаю, как это сделать. Я уже пробовал какой-то iframe, но я должен дать «источник» в качестве URL-адреса, и это невозможно, поскольку вызов ajax делает сообщение параметров и т. Д. ... любая помощь по этому поводу? Раньше я знал, что в каком-то языке, что называется «IsUpload = истина», слишком плохо это не Jquery AJAX ....

Надежды услышать от вас, ребята

+0

похоже, что вы не принимаете совет! – jAndy

+0

которые советуют ?? – Thomas

+1

Он означает, что вы задали 6 вопросов на этом сайте и не приняли никаких ответов, которые были предоставлены. Механика и подразумеваемая вежливость на сайте - то, что вы должны принять наилучший правильный ответ на свои вопросы, если есть какие-либо, которые можно считать правильными. – Greg

ответ

3

Это звучит, как это не должно быть запросом Ajax - если вы только POST, то форма, то пользователь перейдет на URL-адрес csv и будет предложено загрузить файл.

+0

это не ... я нажимаю submit на моей форме ... мой взгляд видит, что ему нужно создать csv, он возвращает объект HTTPResponse, но он не открывает 'save file as', как вы должны это делать? Это должно быть возможно в jquery/ajax, это было возможно в ExtJS ... Не могли бы вы привести мне пример того, как вы должны это делать, зная, что значения POST (параметры) могут быть разными массивами, так как это «select boxes» ... – Thomas

+0

shreddies - это правильно. Ajax совершенно неактуальен и не нужен здесь. –

+0

это не ... мой контент refrshing внутри страницы ... я отправляю ту же форму, только флажок подтверждает наличие csv или нет. Когда я верну ответ, он будет возвращен к вызову ajax, а не к внешней ссылке ... так что это не имеет значения. Я сделал решение для этого, я просто делаю файл временным и делаю ajax-вызов с iframe по ссылке временного файла ... это единственный способ, который это может сработать в моем случае. Слишком плохой jquery пропускает что-то вроде IsUpload = True, как в ExtJS – Thomas