2

次のajaxコールアンドレスポンスをjsonデータ型で使用しています。現在、データとhtmlタグを直接jsに書き込んでいますが、これは良くなく、読みにくいと思います。Codeigniterビューでそれらを渡すにはどうすればよいですか?

$.ajax({
        type: "POST",
        url: baseUrl + "profile/setting",
        dataType: 'json',
        success: function(data){
          var html = "";
          html += "<div>";
          html += "<img src=\"" + baseUrl + data.picture + "\" />";
          html += "<div>" + data.email + "</div>";
          html += "<div>" + data.first_name + " " + data.last_name  + "</div>";
          html += "<div>" + data.address + "</div>";
          html += "<div><input type=\"text\" class=\"input_text_top\"/></div>";
          html += "<div><input type=\"text\" class=\"input_text_middle\"/></div>";
          html += "<div><input type=\"text\" class=\"input_text_bottom\"/></div>";
          html += "<div><input type=\"submit\" class=\"btn btn_grey\"/></div>";
          html += "</div>";
          $('#result_column').removeAttr('style').html(data);
        }
      });
4

2 に答える 2

4

いくつかのオプションがあります。

1. CodeIgniter ビューから HTML を生成します。

dataType属性を に変更するdataType: 'html'と、サーバーに html の文字列を返させることができます。これをすぐに に挿入できます#result_column

CodeIgniter$this->load->view()には、3 番目のブール値パラメーターが付属しています。デフォルトは ですFALSE。を渡すTRUEと、$this->load->view()関数はブラウザにエコーする代わりにデータを返します。

あなたができることは次のとおりです。

$response = $this->load->view("your_ajax_view", $data, TRUE);
//do anything you would need to with the response.
echo $response;

2. テンプレート システムを使用する

MustacheHandlebarsEJSまたはUnderscoreと同様に、返された json データをカスタム テンプレートに挿入します。これには、 (最初のページの読み込み時に)マークアップを 1 回だけ転送し、それ以降はデータのみを転送するため、帯域幅を節約できるという利点があります。

于 2012-10-02T17:18:16.320 に答える
2

基本的に、それを行いたい場合は、プロファイル/設定コントローラーで処理するだけです。次に、コントローラーの最後にビューをロードします。次に、返されるデータとしてhtmlを実行するようにajax関数を変更します。このようなもの:

AJAX 部分:

     $.ajax({
            type: "POST",
            url: baseUrl + "profile/setting",                
            success: function(data){
               $('#result_column').html(data);
            }
            });

コントローラ:

function setting()
{
  //whatever your code is, but then just pass the json 
//data you were echoing before to the view file
$data['json_stuff'] = '';//however you generat this
$this->load->view('some view file', $data);
return;
}
于 2012-10-02T16:11:22.893 に答える