2016-12-20 6 views
0

ReactJSで$.post経由でデータを投稿し、publisher_idのような基準でデータベースからデータを取得するために作成されたAPIで使用します。 私がしようとしているのは、Userという特別なクラスからpublisher_idを取り出し、Reactアプリケーションを介してapiファイルに投稿することです。私は、通常はonSaveの機能を持つフォームを介してサーバーにデータを送信するときに$ .postしか使用できないという問題に遭遇しました。私はそれがどのように動作するのか十分に認識していますが、私の質問は次のとおりです。$.postなどのデータを送信する方法はありますか?

私はcomponentWillMountを使用してみましたが、別の問題が発生しました。私は通常、$.postが動作するためには、イベントがトリガされなければならないことに気付きました。

私は何をしたいのですか?私は正常に動作し、以下を使用し$.get方法については

コード

:このデータの検索が起こるの後、私は仕事に私のAPIのために行うに必要なもの

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

は右です、 publisher_idread.phpに投稿すると、データベースから特定のデータのみを取得するための責任があります。

EDIT:

私は何をやって試してみましたが、次のされています

componentDidMount: function() 
{ //previous code 
this.serverRequest = $.post("read_all_products.php", { 
     publisher_id: this.state.publisher_id, 
    }) 
} 

前に述べたように、データの取得は完全に後のレンダリング機能で{これでそれを表示しようとしたとき以来作品.state.publisher_id}正しく表示されます。 データの投稿は機能しません。私はページロード時にそれを送信しようとしているので、私はそれをやるべきであることを十分に認識していないかもしれません。

EDIT2: また、私はpublisher_idをメインコンポーネントからプロップとして渡そうとしました。そこで、$ .getメソッドがここで発生します。仕事と私はのOnSave機能を使用してフォームを送信しようとしたしませんでした

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)); 
} 

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} 

が、私はまだ誰かの助けを楽しみにしてそれから私は次のようでした。私はかなり詰まって、過去数日間続いています。私はこれを動作させる必要があります。あるいは、私は認証を変更する必要があります。

質問:Reactで$ .postを使用して、ページの読み込み時に.php apiファイルにpublisher_idという名前の小道具を送信するにはどうすればいいですか?何か他のことができない場合は、おそらくcomponentWillMountの中で、componentDidMountの前に一度自分自身を押す空のフォームを使ってデータを送りますか?

+0

通常のAJAX投稿では、イベントをトリガーする必要はありません。あなたがコードでそれをやったやり方は、あなたが 'this.serverRequest'にそれを割り当てたからです。しかし、なぜあなたは '$ .get'をPOSTに使用していますか? – putvande

+0

$ .getを使用して、そのクラスからpublisher_idを取得し、それをcomponentDidMountの状態に設定しています。私は$ .postを使ってそのpublisher_idを別のPHPファイルに送り、次に "... WHERE p.publisher_id ="という条件を使ってデータベースから製品の配列を選択しようとしています。 this-> publisher_id。 "..." –

答えて

0

私は、次の操作を行って問題を解決しています

上記のコードのための解決策は存在しません。私がしたことは、単純にpublisher_idをReactにまったく渡さないことです。私は単に私のAPIにPHPセッションを開き、保存された値を$ _SESSION変数として使用しました。

これを実行すると、すべては私が望むように機能します。