ajax json 질문입니다. 채택완료

Copy
///  test.php

<div id="test"></div>

 

$.ajax({

 url : "./ajax_test.php",

 type ; "post",

 dataType : "json',

 data : {data : 123}

 success : function(res) {

  $('#test').html(res.data);

 }

});

 

 

// ajax_test.php

$data = $_POST['data'];

$result = array();

$result['data'] = '';

$result['data'] = "<div>

<span>123</span>

<div>

 <span>234</span>

</div>

</div>";

 

echo json_encode($result);

 

이런식으로 json으로 할때 $result['data']처럼 html을 변수에 넣는방법말고

 

ajax success 할때 html을 받으려면 어떻게해야하나요?

답변 4개

채택된 답변
+20 포인트

안에 들어가야 할 값이 123 / 234라는 값이면 이 두 값을 $result에 넣으시고 echo json_encode($result)하시면 됩니다.

 

그러면 ajax에서 success할때 값을 받아올 것이고, 그 안에서 지금 $result['data']에 적으신 코드를 작성하시면 됩니다.

 

예를 들면 다음과 같습니다.

Copy
success : function(res){

    var temp_data = "";

    for(var i=0; i<res.length; i++){

        temp_data += "<span>"+res[i]+"</span>";

    }

    $('#test').html(data);

}

 

대략적으로 적은거라..문법상 틀린것도 있을 수 있는데 저런 방식으로 돌아간다는 느낌만 받으시면 될것 같습니다.

 

결국 서버가 일을 덜 하게 되고 클라이언트가 일을 더 하게 되겠죠. (서버는 작은 데이터 값만 전송해주므로)

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

저런건 굳이 json이런 것보다 간단한 방법으로 하는 것이...

 

$.post("./ajax_test.php","data=123", function(cont){

  $('#test').html(cont);

});

/////////

ajax_test.php 마지막 변경 echo $result['data']; <--배열로 만들 필요없음

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

json타입인 경우 배열변수에 넣지 않고 가져 올 수 있는 방법은 없는 것으로 알고 있습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

 

Copy
///  test.php
<div id="test"></div>
 
$.ajax({
 url : "./ajax_test.php",
 type : "post",
 dataType : 'html',
 data : {data : 123}
 success : function(html) {
  $('#test').html(html);
 }
});
Copy
// ajax_test.php
<div>
  <span>123</span>
  <div>
    <span>234</span>
  </div>
</div>
로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고