6

javascript からコントローラーのメソッドへの ajax 呼び出しがあります。コントローラーのメソッドはビューをロードする必要があります (画面に新しいページを表示するなど)。すべて問題ないように見えますが、新しいビューがロードされていないようです。画面上。ビューで使用するデータを含む配列変数を渡しているため、header または windows.location を使用できません。

このページは、Chrome デバッグ コンソールの [ネットワーク] タブ (ajax を選択している場合はプレビュー サブタブ) の下に表示されます。でもメイン画面はそのまま。

誰かが同様の問題に直面したか、解決策を持っている場合は、私を助けてください。

ありがとう!!

4

3 に答える 3

13

これがあなたが間違っていることです。

ajax を使用してページをリクエストしても、そのページは返されません。

$this->load->view('pagename',$datapassed); を使用する場合 ビューをロードするため、何も表示されません。

あなたがしなければならないことは使用することです

$data=$this->load->view('pagename',$datapassed, TRUE);

それが行うことは、そのページを返し、それを $data に保存した後、次を使用して印刷できることです

$this->set_output($data); 

これをajax結果で受け取り、divにロードします。

ページ全体を更新したい場合は、使用できます

$(body).html(result);

ロード ビューで 3 番目のパラメーターを指定して、html ページを送信する必要があることを理解する必要があります。

于 2013-03-01T18:57:43.910 に答える
11

コントローラークラスで

function get_view_ajax()
{
   $data['username] = $_POST['username];
   $response = $this->load->view('radius/radius_corporate_graph',$data,TRUE);
   echo $response;
}

ajax 呼び出しを開始するビュー ファイル内

$('#button').click(function(){
var username = $('#username').val();

$.ajax({
   type:'POST',
   url:"<?php echo base_url(); ?>controller_name/get_view_ajax/",
   data: "username="+username,
   success:function(msg){
    $("#div_result").html(msg);
   },
   error: function(result)
   {
      $("#div_result").html("Error"); 
   },
   fail:(function(status) {
      $("#div_result").html("Fail");
   }),
   beforeSend:function(d){
    $('#div_result').html("<center><strong style='color:red'>Please Wait...<br><img height='25' width='120' src='<?php echo base_url();?>img/ajax-loader.gif' /></strong></center>");
   }

  }); 
});

<div id="div_result">
<a href="#" id="button">Click here </a>  

get_view_ajax 関数で参照されるコントローラー関数 (extra_info.php) に読み込まれる別のビュー ファイル

<h1>This page is called from ajax function </h1>
于 2015-06-17T07:43:15.047 に答える