Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对于Django应用程序,生产服务器和runserver上的Ajax/Fetch调用有何不同?_Javascript_Ajax_Django_Heroku_Django Views - Fatal编程技术网

Javascript 对于Django应用程序,生产服务器和runserver上的Ajax/Fetch调用有何不同?

Javascript 对于Django应用程序,生产服务器和runserver上的Ajax/Fetch调用有何不同?,javascript,ajax,django,heroku,django-views,Javascript,Ajax,Django,Heroku,Django Views,--更新已解决-- 问题不是我的代码,而是我使用的HTTP服务器库。Gunicorn显然没有按照我需要的方式工作,所以下面的这篇文章帮助我找到了Waitress,作为HTTP服务器库的替代方案。现在我的进度按预期的方式更新 链接: ============================================= 我的开发runserver的运行情况如何: 我有一个Django应用程序,它使用Ajax请求更新一个progresshtml标记(目前我正在使用POST,但在我的开发runse

--更新已解决--


问题不是我的代码,而是我使用的HTTP服务器库。Gunicorn显然没有按照我需要的方式工作,所以下面的这篇文章帮助我找到了Waitress,作为HTTP服务器库的替代方案。现在我的进度按预期的方式更新

链接:

=============================================

我的开发runserver的运行情况如何

我有一个Django应用程序,它使用Ajax请求更新一个progresshtml标记(目前我正在使用POST,但在我的开发runserver上也成功地使用了GET)。一切都很好。Ajax请求调用my view.py中的一个函数,该函数返回一个JsonResponse,其中包含来自视图中发生的业务逻辑的更新数据。我使用setInterval和setTimeout来控制调用的数量,并在达到某些值时使用clearInterval

生产部署到Heroku

我目前正在尝试部署到Heroku,并已成功99%。我的模板呈现正确,因此我可以查看我的页面并提交表单进行处理。这里1%的问题是我的Ajax请求没有得到更新的数据,我不知道为什么。就像我的Ajax请求只是得到初始化的变量值零,然后继续返回这些值

我正在记录Ajax调用返回的JSON:

{games: 0, progress: 0, percentage: 0}
{games: 0, progress: 0, percentage: 0}
{games: 0, progress: 0, percentage: 0}
{games: 0, progress: 0, percentage: 0}
这个JSON只是在Heroku生产服务器上一次又一次地返回

在我的本地runserver上,我得到了类似这样的结果,本地服务器显示了它正在取得的进展:

{games: 5, progress: 1, percentage: 0}
{games: 5, progress: 2, percentage: 0}
{games: 5, progress: 3, percentage: 20}
{games: 5, progress: 4, percentage: 40}
{games: 5, progress: 5, percentage: 40}
我对此做了很多研究,实际上刚刚从Ajax切换到使用Fetch()(很抱歉中途从Ajax切换到Fetch,但我认为问题与使用的方法无关)是否有我不知道的设置会对生产中的页面实时更新产生影响?以下是我当前的获取方法:

$("#myButton").click(function call_fetch() {
        fetch('/progress/', {
            method: 'post',
            headers: {
              'X-CSRFToken': csrftoken
            },
            credentials: "same-origin"
        })
          .then(
            function(response) {
              if (response.status !== 200) {
                console.log('Looks like there was a problem. Status Code: ' +
                  response.status);
                return;
              }

              // Examine the text in the response
              response.json().then(function(data) {
                console.log(data);
                document.getElementById("progressBar").max = data["games"];
                document.getElementById("progressBar").value = data["progress"];
                document.getElementById("progressGames").innerHTML = "Game " + data["progress"];
                document.getElementById("percentage").innerHTML = "Percentage Rate: " + data["percentage"] + "%";
                if (data["progress"] == data["games"] && data["progress"] != "0") {
                    clearInterval(interval_id);
                    document.forms.myForm.myButton.disabled = false;
                }
              });
            }
          )
          .catch(function(err) {
            console.log('Fetch Error :-S', err);
          });
        var interval_id = setInterval(setTimeout(call_fetch,2000), 2000);
    });

我不使用基于类的视图,如果这有区别的话?我只是使用了两种不同的视图函数。一个用于呈现index.html页面,另一个用于返回JsonResponse的进度更新。我正在使用Python-3.6、Django-1.10.6部署到Heroku,它正在工作。非常感谢您的帮助。

问题不是我的代码,而是我使用的HTTP服务器库。Gunicorn显然没有按照我需要的方式工作,所以下面的这篇文章帮助我找到了Waitress,作为HTTP服务器库的替代方案。现在我的进度按预期的方式更新


链接:

我想看看你的
视图.py会很有帮助
我在发布这篇文章后,就讽刺地解决了这个问题。Smh。这不是我的代码,问题出在我使用的HTTP服务器库(gunicorn)。我改用女服务员,这就解决了我的问题。我会更新帖子的。这个链接很有帮助: