2016-10-16 3 views
0

私は自分のクライアントからの内部メッセージを持つ受信トレイを持っています。jQueryを使用してMVCでデータを転送する最も良い方法は?

$.ajax({ 
     url: 'messages/retrieve/' + client_id, 
    }).done(function(data) { 

     $('.messages-dialog').html(data); 

    }); 

私のコントローラは、JSONデータと変数を返す必要があります:私は名前の上のリストをクリックすると、私はそうjQueryの$.ajaxを使用して要求していますか?私はそれがビューにそれをダンプする必要があり、私はそれを扱う必要がありますが、クライアント側があればそれを行う方法を理解していますか?

jQuery.html()を使用して.messages-dialogでコントローラにhtml構造体を扱い、作成する方が良いかどうかは分かりません。

申し訳ありませんが、私はその問題を少し失っています。

+0

ベストプラクティスでは、jqueryからすべてのデータを含むjsonを返すようにして、データを解析してjavascript – Cristian

+0

@Cristianでビューの作成を処理するだけです。なぜそれが「ベストプラクティス」ですか?それについての信用できる情報源? – Dekel

+0

あなたのデータが表示される方法を変更したいときはいつでも、サーバー側のコードに触れる必要はありません.jqueryスクリプトのデータを別の方法で扱うだけで十分です。 – Cristian

答えて

0

上記の例のように、jQuery.ajax()メソッドを使用できます。例http://api.jquery.com/jquery.ajax/の公式文書も参照してください。

jQuery.get()およびjQuery.post()メソッドは、送信する方法と内容に応じて使用できます。以下に示すように、このメソッドを使用することができます:http://api.jquery.com/get/http://api.jquery.com/jQuery.post/

var url = 'messages/retrieve/' + client_id; 
$.post(// for example 
    url, 
    function(data) { 
     $('.messages-dialog').html(data); 
    }); 

は、ここでは例との公式ドキュメントを参照してください。

サーバ・ハンドラは以下のようにのようにする必要があります:

use JsonResponse; // you must specify the exact component (I use this) 

/** 
* Change message in dialog // for example 
*/ 
public function changeDialogMessageAction(Request $request) { 
    // request data processing 

    $response = new JsonResponse(); 
    $response->setData(array(
     // new data for returning to client 
    )); 

    return $response; // your data, which will be handled in callback 
} 

あなたは、コントローラにHTML構造を作成しないでください。それは悪いスタイルです! JavaScriptには非同期のイベントモデルがあり、それを使用する必要があります。コントローラは、あなたが渡したデータを処理/変換してから戻ってくる必要があります。 jQueryコールバックは、受け取った処理/変換されたデータをDOMに埋め込む必要があります。

+0

データの引数はどこですか?なぜポスト? '$ .getJson'に言及してみませんか? – charlietfl

+0

1)どのような議論ですか?タスクのコンテキストをどのように知ることができますか? 2)注意深く読んでください://例えば3)JSONについての質問は一言もありません!!! –

関連する問題