1

I am using a homegrown MVC framework. The client passes the current page #, the controller name, the desired task, and any pertinent data to the server. All of this information can either be in the URL or in the post object.

I would strongly suspect that the data to be saved should be stored in the post object, and probably the task as well since it applies only to post data. The page number and controller name maybe makes sense more in the URL since I will have similar get requests with the same page number and controller. I show it this way in the example below.

Where should I locate the information to be passed, and why? Thank you

$.post('index.php?page=123&controller=edit',{task:'saveSomething', data:'whatever'});
4

3 に答える 3

2

サーバー上の既存のリソースを取得する場合はGETを使用し、リソースを作成または変更する場合はPOSTを使用する必要があります。HTTP仕様をよく読んでください。

そうは言っても、すべてのデータをPOSTオブジェクトに入れるのがおそらく最も簡単です。

元。

var post_data = {
  page:123,
  controller:'edit',
  //other data
};

$.post('/url',post_data,function(response){/*callback function*/});

さらに進んで、ページIDが渡される編集アクションを備えたページコントローラーが必要です。次に、到達したいコントローラーとアクションをurlセクションに、リソースのIDをPOSTデータに入れます。

アプリケーションの範囲によっては、このタイプのものを処理するフレームワークを使用している可能性があります。このようにして、アプリケーションは一貫した構造を維持し、これらの障害の99%はすでに他のユーザーによって検討されています。CodeIgniter、CakePHP、FuelPHPなどの使用を検討することをお勧めします...

于 2013-02-17T16:40:49.670 に答える
0

GET(URL)またはPOSTのいずれか1つのアプローチのみを使用する方がよいと思います。

そして私にとって、POSTは常により良い方法です。特にURLを使用してデータを渡す場合を除きます。

于 2013-02-17T16:38:07.337 に答える
0

あなたの質問は正しいです。

$_GETおよび$_POSTでパラメーターを使用できるようにする必要があるpageと想定します。ただし、この方法では制御できないヘッダーに問題があるようです。controllertaskdataContent-Type

https://github.com/jquery/jquery/blob/1.4.2/src/ajax.js#L143を参照してください 魔法はhttps://github.com/jquery/jquery/blob/1.4.2/src/にありますajax.js#L205

  • オプション1:
    ヘッダーを設定します:
    $.ajaxSettings['headers'] = [ 'Content-Type': 'application/form-www-url-encoded']
    これは1回だけ実行してください。

  • オプション2:
    使用$.ajax

$.ajax({
    type: "POST",
    headers: ['Content-Type': 'application/form-www-url-encoded'],
    url: 'index.php?page=123&controller=edit',
    data: {task:'saveSomething', data:'whatever'},
});
于 2013-02-17T16:53:05.037 に答える