javascript - 使用 JQuery post+get 数据使用react

标签 javascript jquery django reactjs httprequest

我用它从 Django 服务器获取 todos:

getTodos(){
    $.ajax({url: "http://localhost:8000/todos/",
            success: function(data){
                this.setState({todos:data},function(){console.log(data)})}.bind(this),
            cache: false});
}

这将发布一个新的todo并更新状态:

  handleAddTodo(title,text){
        $.post("http://localhost:8000/todos/",{title:title,text:text},this.getTodos());
    }

因此回调函数this.getTodos()将从服务器获取新数据。不过服务器端好像没有更新? enter image description here

图中,第一个日志来自初始数据获取。最后一个来自回调函数。

最佳答案

我认为问题出在这一行:

$.post("http://localhost:8000/todos/",{title:title,text:text},this.getTodos());

这里您需要传递一个函数,一旦 post 部分成功,该函数就会触发,但您没有传递一个函数,而是通过使用 () 调用该函数来传递函数返回的值。通过这种方式,该函数将与 post 调用并行调用,检查网络部分,您将同时看到两个调用。

使用arrow function :

$.post("http://localhost:8000/todos/",
       {title:title,text:text}, 
       () => {
           this.getTodos()
       }
);

或者这样写:

$.post("http://localhost:8000/todos/",
       {title:title,text:text}, 
       this.getTodos
);

并在构造函数中绑定(bind)getTodos方法:

this.getTodos = this.getTodos.bind(this);

检查DOC 了解更多详情。

关于javascript - 使用 JQuery post+get 数据使用react,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45231106/

相关文章:

python - Django 测试客户端 : How to remove http headers

javascript - JS函数逐渐变慢

javascript - VueJS : Bind values to Component

javascript - GAE Channel API - 通过 Javascript 检查套接字是否处于事件状态

javascript - 从 javascript 读取实时日志文件

django - Celery + Django 信号

javascript - 在 Lerna Monorepo 中检测循环依赖

jquery - 为什么 .remove() 在我的设置中不起作用?

javascript - IE 中的 .text 更新问题

Python3 看不到 Django