2014-10-09 3 views
-1

나는 아약스 전화 APS 반환 json을 사용하고 HTML 페이지를 아래에 추가 렌더링.
PHP API에서 함수를 렌더링 한 다음 API에 함수를 게시 한 다음 js에 렌더링 된 데이터를 반환하면 js에 단지 추가 만 할 수 있습니까?아약스 반환 내용 PHP에서 반환

js로 쓰면 너무 읽기 어려운 HTML 구조가 있기 때문에. 대부분의 사람들이이 작업을 수행하는 방법을 궁금해하십니까?

$.ajax({ 
    url: public_path+'/api_for_ajax/category/'+category_id+'/'+visible+'/'+rows_perpage+'/'+page, 
    type: 'POST', 
    processData: false, 
    contentType: false, 
    async: false 
}).done(function(response) { 
    var response = JSON.parse(response); 
    $(data_article.article).each(function(i, each_data_article) { 
     var output = '<div class="article-list"><a href="'+public_path+'/article/'+each_data_article.id+'"> 
     <div class="thumbnail"><img src="'+public_path+'/assets/thumbnails/'+each_data_article.thumbnail.thumbnail_id+'/'+each_data_article.thumbnail.file_name+'.'+each_data_article.thumbnail.file_format+'" alt=""></div> 
     <div class="subject">'+each_data_article.subject+'</div> 
     </a></div>'; 
     // append 
    }); 
}); 

나는 슬림 프레임 워크에 노력

$data_select_category_id_page = $this->article_model->select_category_id_page($response_message, $category_id, $visible, $rows_perpage, $page); 

$data = array(); 
$data['article'] = $data_select_category_id_page; 

echo json_encode($data); 

API를, 그것은 왜 작동하지?

API

$data_select_category_id_page = $this->article_model->select_category_id_page($response_message, $category_id, $visible, $rows_perpage, $page); 

// 1 
$app->render('frontstage/article/page_view.php', array(
    'data_select_category_id_page' => $data_select_category_id_page, 
) 
); 


// 2 
return <<<HTML 
<div><?php print_r($data_select_category_id_page);?></div> 
HTML; 

레이아웃

<?php $column_count = 1; ?> 
<div class="row"> 
    <?php foreach ($data['article']['article'] as $i => $each_article) { ?> 
     <?php if ($i >= 4) { ?> 
    <div class="article-list"> 
     <a href="<?php echo $uri['public']; ?>/article/<?php echo $each_article['id']; ?>"> 
      <div class="thumbnail"><img src="<?php echo $uri['public']; ?>/assets/thumbnails/<?php echo $each_article['thumbnail']['thumbnail_id']?>/<?php echo $each_article['thumbnail']['file_name']?>.<?php echo $each_article['thumbnail']['file_format']?>" alt=""></div> 
      <div class="subject"><?php echo $each_article['subject'];?></div> 

      <div class="category-list-container"> 
      <?php foreach ($each_article['category'] as $each_article_category) { ?> 
       <div class="category-list"><?php echo $each_article_category['subject']; ?></div> 
      <?php } ?> 
      <div class="clear"></div> 
     </div> 
     <?php 
      $old_date = $each_article['create_at']; 
      $old_date_timestamp = strtotime($old_date); 
      $new_date = date('d M Y', $old_date_timestamp); 
     ?> 
     <div class="create-at"><?php echo $new_date;?></div> 
    </a> 
</div> 
<?php if (($column_count % 4) == 0) { ?> 
<div class="clear"></div></div><div class="row"> 
<?php } ?> 
<?php $column_count++;?> 
<?php } ?> 
<?php } ?> 
<div class="clear"></div> 
+1

글쎄, 그 옵션도, 서버가 마크 업 응답을 구축하고 json 대신 html로 수신하자 – Ghost

+0

@ghost가 제안한 것. 왜 데이터가 이미 html로 재생되도록하고 하나의 변수에 추가하기 만하면되지 않습니까? – Dorvalla

+0

이 codeigniter입니까? – Ghost

답변

1

서버가보다 JSON 렌더링되는 HTML을 복귀하는 것이 가능하다.

$.post("ajax/test.php", function(data) { 
    $(".result").html(data); 
}); 

여기서 test.php는 일종의 HTML 데이터를 반환합니다.

test.php 코드에는 관련 html을 렌더링하는 논리가 포함됩니다.

$public_path = '/sitepath/'; 
foreach($data_select_category_id_page as $article) 
{ 
    echo '<div class="aricle-list"><a href="' . $public_path . '/article/' . $article->id . '"> 
    <div class="thumbnail"><img src="' . $public_path . '/assets/thumbnails/' . $article->thumbnail_id . '/' . $article->thumbnail->file_name . '.' . $article->thumbnail->file_format . '" alt=""></div> 
    <div class="subject">' . $article->subject . '</div> 
    </a></div>'; 
} 

또는 대안으로 HTML을 렌더링하기 위해 레이아웃을 사용 : 논리로 영업 예제를 사용 (테스트되지 않은)과 같을 것입니다.

서버에서 렌더링 된 렌더링 된 HTML의 크기가 JSON보다 큽니다.

+0

하지만 문제는 어떻게 PHP에서 렌더링 위의 노력,하지만 작동하지 않는 몇 가지 예를 보여 줄 수 있습니까? – user1775888

+0

@ user1775888 샘플을 사용하여 답변을 업데이트했습니다. JSON 대신 관련 html을 반향하기 만하면됩니다. 원하는 경우 간단한 레이아웃을 사용하여 html을 출력 할 수 있습니다. – Kami

+0

답장을 보내 주셔서 감사합니다. 레이아웃을 사용하는 방법은 무엇입니까? 독립적 인 레이아웃 PHP 파일을 만들고 배열을 전달한 다음 js로 돌아갈 수 있다는 것을 의미합니까? – user1775888