Django AJAX Форма выпуска в IE8 - PullRequest
       4

Django AJAX Форма выпуска в IE8

0 голосов
/ 19 февраля 2011

Я следую за фрагментом здесь , чтобы реализовать форму AJAX в Django.Тем не менее, IE8 предлагает мне загрузить ответ javascript, когда я нажимаю «отправить», а не отображать его на странице!

Что-то, что я мог сделать неправильно (работает нормально в FF / Chrome!)?

Некоторые фрагменты ...

Просмотр:

def subscribe(request, xhr="NA"):
if request.method == 'POST':
    form = CreateSubscribeForm(request.POST)

    # Validate the form:
    clean = form.is_valid()

    # Make some dicts to get passed back to the browser
    rdict = {'bad':'false'}
    if not clean:
        rdict.update({'bad':'true'})
        d={}
        # This was painful, but I can't find a better way to extract the error messages:
        for e in form.errors.iteritems():
            d.update({e[0]:unicode(e[1])}) # e[0] is the id, unicode(e[1]) is the error HTML.
        # Bung all that into the dict
        rdict.update({'errs': d  })
    else:
        form_email = form.cleaned_data['email']
        subscriber = Subscriber(email=form_email)
        subscriber.save()

    if xhr=="xhr":
        # Ajax request.
        # Make a json whatsit to send back.
        json = simplejson.dumps(rdict, ensure_ascii=False)
        # And send it off.
        return HttpResponse(json, mimetype='application/javascript')
    else:
        return render_to_response('holdingpage/holdingpage.html',
                                    {'form': form}, context_instance=RequestContext(request))

HTML:

<form enctype="multipart/form-data" action="{% url subscribe None %}" method="POST" id="subscribe_form">    
            {% csrf_token %}
            <label for="id_email" class="inline infield" style="position: absolute; left: 0px; top: 0px; ">Enter your email address...</label>
            {{ form.email }}
            <button type="submit" id="subscribe_button">Submit</button>
</form> 


<script type="text/javascript">
jQuery(document).ready(function() {

    var options = { 
        target:        '#basic-modal-content',   // target element(s) to be updated with server response 
        beforeSubmit:  showRequest,  // pre-submit callback 
        success:       showResponse,  // post-submit callback 

        // other available options: 
        url:       '{% url subscribe "xhr" %}',         // override for form's 'action' attribute 
        //type:      type        // 'get' or 'post', override for form's 'method' attribute 
        dataType:  'json',        // 'xml', 'script', or 'json' (expected server response type) 
        //clearForm: true        // clear all form fields after successful submit 
        //resetForm: true        // reset the form after successful submit 

        // $.ajax options can be used here too, for example: 
        //timeout:   3000 
    }; 

    //$('#email_field').focus(email_focus).blur(email_blur);
    //$('#subscribe_form').bind('submit', subscribe_submit);

    // bind to the form's submit event 
    $('#subscribe_form').ajaxForm(options); 

});

1 Ответ

0 голосов
/ 20 февраля 2011

Измените ваш mimetype из этой строки

return HttpResponse(json, mimetype='application/javascript')

на 'text / javascript'.Или вы можете также настроить в конфигурации вашего сервера отображение содержимого файлов application / javascript вместо его загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...