页面加载时的Ajax $ .post - React

时间:2016-12-20 15:56:59

标签: javascript php jquery ajax reactjs

我希望通过onSave在ReactJS中发布数据,并在api中使用它来使用某些条件(如publisher_id)从数据库中检索数据。 我想要做的是从一个名为User的特殊类中获取publisher_id,然后通过我的React应用程序将其发布到api文件中。我偶然发现了一个问题,即我只能使用$ .post通过一个表格(通常是一个$.post函数向服务器发送数据。我完全清楚这是如何工作的,但我的问题是:

有没有办法在渲染过程开始时使用componentWillMount或其他任何内容发送数据?

我曾尝试使用$.post,但我偶然发现了另一个问题。我注意到,通常,要使$.get起作用,必须触发事件。

我应该用什么样的活动来做我想做的事?

代码

对于componentDidMount: function () { this.serverRequest = $.get("get_user_id.php", function (publisher_id) { this.setState( { publisher_id: JSON.parse(publisher_id) }); }.bind(this)); } 方法,我使用以下工作正常:

publisher_id

我的api工作需要做的就是在检索数据之后,将read.php发布到componentDidMount: function () { //previous code this.serverRequest = $.post("read_all_products.php", { publisher_id: this.state.publisher_id, }) } ,文件负责从数据库中仅检索特定数据。

编辑:

我尝试过的是以下内容:

componentWillMount: function () {
    this.serverRequest = $.post("read_all_products.php", {
        publisher_id: this.props.publisher_id,
    });

},

componentDidMount: function () {
    this.serverRequest = $.get("read_all_products.php", function (products) {
        this.setState({
            products: JSON.parse(products)
        });
    }.bind(this));
}

如前所述,数据的检索完全有效,因为稍后在渲染函数中尝试使用{this.state.publisher_id}显示它时,它将正确显示。 什么不起作用的是数据的发布。我可能不完全清楚我应该怎么做,因为我再次尝试在页面加载时发送它。

EDIT2: 我也尝试将publisher_id作为主要组件的prop传递,因此$ .get方法现在在那里发生。然后我做了以下事情:

    onSave: function (e) {
    $.post("read_all_products.php", {
        publisher_id: this.props.publisher_id,
    });
    e.preventDefault();
}// used after this in the render method on a form with a button, both 
//have onSubmit and onClick set to {this.onSave}

这没有用,我尝试使用onSave函数发送表单:

{{1}}

我仍然期待得到别人的帮助。在过去的几天里,我几乎陷入困境。我需要让它工作,或者我需要更改身份验证或继续坚持这个。

问题是:如何在React中使用$ .post,在页面加载时将一个名为publisher_id的道具发送到我的.php api文件,或者说,如果其他任何事情是不可能的话,通过制作一个使用空表单发送数据的按钮,该表单在componentDidMount之前按下一次,可能在componentWillMount中?

1 个答案:

答案 0 :(得分:0)

我通过执行以下操作解决了问题:

上述代码的解决方案并不存在。我所做的只是根本没有将publisher_id传递给React。我只是在我的api中打开php会话并使用保存的值是$ _SESSION变量。

这样做之后,一切都按我想要的方式运作。