2012-02-09 35 views
0

我的js腳本

jQuery(".unblock").click(function(){ 
     var num = jQuery('.page.active').text(); 
     var ban_id = jQuery(this).attr('id'); 

     jQuery.get("http://127.0.0.1/auth_system_1/user_activity/delete_user_ban", { ban_id : ban_id, num : num }, function(data) { 

       jQuery("#ban_list").append(data); 

     }, "json"); 

    }); 

我delete_user_ban功能

function delete_user_ban() 
{ 
    $user_id = $this->session->userdata('user_id'); 

    $ban_id = $this->input->post('ban_id'); 

    $current_page = (int)$this->input->post('num'); 

    //$this->activity_model->delete_user_ban($ban_id); 

    $per_page = 2; 

    $data['ban_list'] = $this->user_activity_lib->user_ban_list($user_id, $current_page, $per_page); 

    $this->load->view('front_end/ajax_delete_ban', $data); 

} 

,我想回到這裏它

<!--begin ban list--> 
<div id="ban_list"> 
      <?php foreach($ban_list as $value): ?> 
     <div class="comment-box small-comment" id="info-ban-1"> 
      <div class="photo-box"> 
     <img src="<?=$value['user_image'];?>" alt="" class="photo rounded"/> 
     <a href="#" title="" class="corner rounded"></a> 
      </div> 
      <div class="comment rounded"> 
     <div class="bg-tl"></div> 
     <div class="avatars"> 
      <a href="#" title=""><?=$value['user'];?></a><span>blocked</span><a href="<?=base_url() . $value['ban_user'];?>" title=""><img src="<?=$value['user_ban_image'];?>" alt=""/><?=$value['ban_user'];?></a> 
      <a href="[removed];" title="Unblock" class="unblock" id="<?=$value['ban_id'];?>">unblock</a> 
     </div> 
      </div> 
      <div class="both"></div> 
     </div> 
      <?php endforeach; ?> 

      </div> 
     <!--end ban list--> 
     <?=$pagination;?> 
     </div> 

我能說什麼,一切都除數據未返回外,其效果很好。

如果刪除這條線在功能:

$this->load->view(‘front_end/ajax_delete_ban’, $data); 

並添加回聲「1」;

它返回我想'1'的位置,但是這裏的內容$ this-> load-> view('front_end/ajax_delete_ban',$ data);不要回到這個div?爲什麼?

我看過響應和HTML什麼回報,這裏是HTML線從視圖返回(沒有錯誤),但不會出現在JQuery(」#ban_list」).append(data);

我不用彷徨工作不錯,但只返回一個字,也期待響應和HTML在螢火蟲它顯示返回的行,但不添加到div?

我已經取得了一些測試:

echo '1111'; 

回報OK!

echo '1111 2222'; 

不返回?

如何返回更多然後一個單詞,我的錯誤在哪裏?

+1

爲什麼你設置'.get'到'json'返回如果你想加載HTML? – 2012-02-09 03:29:28

回答

1

你在混合get和post,不是嗎?

要麼改變你的jQuery來$.post()

,或者你也使用 'JSON' 在$獲得()調用,而是返回HTML改變你的PHP來$this->input->get();

你應該json_encode你的看法。

您可以將一個布爾型第三個參數傳遞給$this->load->view(),該參數將返回視圖中的HTML爲字符串。

$myHTML = $this->load->view('front_end/ajax_delete_ban', $data, true); 
echo json_encode(array("html" => $myHTML)); 

然後,在你的jQuery的回調函數,你可以使用retreive data.html

+0

我不認爲將HTML字符串放入'JSON'格式是個好主意。我的意思是,爲什麼不告訴jQuery我們期待HTML被返回? – 2012-02-09 03:45:05

+0

你能否詳細說明危害?將附加數據返回給javascript可能非常方便。比如,我經常和json_encode一起返回'array('success'=> true)'或'array('success'=> false)'。這樣,我可以檢查response.success並採取正確的行動。讓我感受到危險,我真的很感興趣,因爲我一直這樣做。 – 2012-02-09 03:50:58

+0

這不完全是一個大問題。不過,我認爲您應該根據從服務器收到的響應(無論是成功還是錯誤)通過JavaScript生成HTML,然後將HTML注入到文檔中。這樣做的目的是減少客戶端和服務器之間傳輸的數據量。 AFAIK,沒有任何傷害。這只是一個表現問題。 – 2012-02-09 03:56:55

0

試試這個,而不是HTML:

jQuery("#ban_list").append($('<div></div>').html(data)); 
+0

沒有幫助(還不知道白色不想返回html – Viktors 2012-02-09 11:51:54