ошибка типа при исключении кода ajax в django - PullRequest
0 голосов
/ 26 сентября 2018

Я использую jquery ajax для передачи данных json на мою веб-страницу (фреймворк Django).Я не могу рендерить данные json (мой первый шаг - просто сделать console.log (data) - не работает).Я получаю тип «неизвестно», поэтому я думаю, что это может быть частью или всей проблемой.В моем простом шаблоне у меня есть кнопка, которая делает вызов ajax, который не работает.Приведенный ниже код включает в себя мой файл urls.py, файл views.py с соответствующей функцией и код ajax на моем веб-сайте.На вкладке «Сеть» на странице разработчиков Firefox написано «Код 200». Я предполагаю, что это означает, что мои urls.py и views.py были правильными, но, пожалуйста, дайте мне знать, если это правда.Мое приложение на pythonanywhere.Я использую console.log, чтобы при вызове ajax вызывать данные json.Это не так.Мой JavaScript вызывает код ошибки - не уверен, сыворотка.Спасибо за любую помощь, которую вы можете предоставить.

urls.py (см. Последний URL):

app_name = 'beach'

urlpatterns = [
    url(r'^$', views.index,name='index'),  #when you go to the beach directory, it looks at this urls.py file, this says go to views.py in this folder, index function
    url(r'^(?P<lakes>[a].*)/$', views.searched, name='lakes'),  #regex = starts with a letter then it can be anything
    url(r'^(?P<gnisid>[0-9]+)/$', views.gnis, name='GNIS'),  #regex = numbers ony, many.  name-'GNIS' a link to the HTTPResponseRedirect or directly from the template from a link
    url(r'^(?P<tmap>tmap)/$', views.tmap, name='tmap'),
    url(r'^(?P<profile>profile)/$', views.profile, name='profile'),
    url(r'^(?P<ajax>profiles/default)/$', views.defaultajax, name='ajaxgnis')   
]

views.py

def defaultajax(request, ajaxgnis):
    x = {"foo": "bar"}
    jsondata = json.dumps(x)
    return HttpResponse(jsondata, content_type='application/json')

шаблон с кодом JavaScript(много тестов, извините)

window.onload = function () {

    $('#putprofile').click(makeProfile);

    function makeProfile(){
        $.ajax({
                url: "/beach/profile/default/",
                dataType: "json",

                error: function(jqXHR, textStatus, errorThrown) {
                    alert('An error occurred... Look at the console (F12 or Ctrl+Shift+I, Console tab) for more information!');

                    $('#result').html('<p>status code: '+jqXHR.status+'</p><p>errorThrown: ' + errorThrown + '</p><p>jqXHR.responseText:</p><div>'+jqXHR.responseText + '</div>');
                    console.log('jqXHR:');
                    console.log(jqXHR);
                    console.log('textStatus:');
                    console.log(textStatus);
                    console.log('errorThrown:');
                    console.log(errorThrown);
                    console.log('datatype:');
                    console.log(typeof data);
                },

                success: function(data, textStatus, jqXHR) {
                    alert('Load was performed. Look at the console (F12 or Ctrl+Shift+I, Console tab) for more information! ');
                    console.log('jqXHR:');
                    console.log(jqXHR);
                    console.log('textStatus:');
                    console.log(textStatus);
                    console.log('data:');
                    console.log(data);
                }
            });

    }
}

1 Ответ

0 голосов
/ 30 сентября 2018

Я выяснил свою проблему:

(1) У меня был существующий URL-адрес с именем profile, и мой исходный вызов ajax был / profile / default, я думаю, что это вызвало некоторые проблемы с URL-адресами в URL-адресах.ру.Я изменил URL вызова ajax в моем шаблоне на /beach/profiles/default, название моего приложения - beach.Окончательный URL-адрес в моем файле urls.py был следующим: url(r'^(?P<defaultajax>profiles/default)/$', views.defaultajax, name='ajaxgnis'). Note again that the "/" in / beach / proiles / default` был критическим, поскольку без «/» URL начинался бы с корневого каталога «beach».

(2) Iв моей именованной группе произошла ошибка, не совпадающая с переменной в моих представлениях.

(3) Я запутался, не "перезагрузив" приложение на веб-вкладке pythonanywhere.

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