2011-04-10 2 views
0

나는 AJAX 및 PHP json_encode()을 사용하는 방법을 배우고있다. I는 AJAX POST 응답으로 사용하여 배열 json_encode() 복귀하고 :json_encode 인쇄 아약스 성공에 html 블록, 조언이 필요

$.post("<?php echo base_url();?>index.php/post/post_insert_ajax/",{ 
     text: post_wall, type:type, entity_id:entity_id, poster_id:poster_id 
    }, 
    function (data){ 
     var postObj = $.evalJSON(data);         
     $("ul#post_already").prepend(//something); 
     $("ul#post_already li:first").slideDown("slow"); 
     $('#post_wall').val(""); 
    }); 

난 어레이 반환 폭발 jquery.json.js를 사용하고 있는데 $("ul#post_already")

<a id='"+postObj.post_id+"' href='board/?p="+postObj.post_id+"' > 
    "+postObj.post_text+" 
</a> 
Created on: "+postObj.created_timestamp+"<a class='showCommentBox' id='"+postObj.post_id"' href='#' >Comment</a>            
<div id='commentContainer-"+postObj.post_id+"' class='commentContainer' style='display:none;'> 
       <form class='submit_comment' id='"+postObj.post_id+"' action='#'> 
        <textarea name='text' id='commentText-"+postObj.post_id+"' class='commentText'></textarea> 
        <input type='submit' name='submit' value='Post Comment' id='"postObj.post_id"' class='submit_comment' /> 
        <input type='hidden' name='user_id' id='user_id' value='"+postObj.user_id+"' /> 
       </form> 
      </div> 
<ul id='comment_post"+postObj.post_id+"'></ul></li> 
로 HTML의 블록을 표시하고 싶었

나는이 모든 것을 .prepend()에 넣으려고했으나 그 방법으로는 작동하지 않는 것 같습니다. 이것을 위해 무엇을해야합니까? 고맙습니다.

UPDATE : 그것은 내 솔루션이되는 평균 시간 그래서, 코드의 몇 가지에 CONCATENATE 기호를 놓친 판명 :

block = "<b>"+user_name+"</b> posted on "; 
block += "<br/><a id='"+postObj.post_id+"' href='<?php echo base_url();?>board/?p="+postObj.post_id+"' >"+postObj.post_text+"</a>"; 
block += "<br />Created on: "+postObj.created_timestamp+"&nbsp;<a class='showCommentBox' id='"+postObj.post_id+"' href='#' >Comment</a>"; 
block += "<div id='commentContainer-"+postObj.post_id+"' class='commentContainer' style='display:none;'>"; 
block += "<form class='submit_comment' id='"+postObj.post_id+"' action='#'><textarea name='text' id='commentText-"+postObj.post_id+"' class='commentText'></textarea>"; 
block += "<input type='submit' name='submit' value='Post Comment' id='"+postObj.post_id+"' class='submit_comment' />"; 
block += "<input type='hidden' name='user_id' id='user_id' value='"+postObj.user_id+"' />"; 
block += "</form></div><ul id='comment_post"+postObj.post_id+"'></ul></li>"; 

과 성공에 나는 HTML 전화 :

$("ul#post_already").prepend(HTML); 

현재 작동하지만 여전히 지저분한 선으로 보입니다. 모범 사례가 아닙니다. 해결 방법이 있습니까?

답변

1

개인적으로 저는 $.parseJSON() 메서드를 사용하여 JSON 배열을 JavaScript에서 사용할 수있는 데이터로 변환하고 싶습니다. 그래서 다시 대답, 그것은 JSON 인코딩하기 전에 우리가 서버에서이 같은 배열을 갖고 있다고 :

$array = array('one' => '1', 'two' => '2', 'three' => '3', 'four' => '4'); 
그런 다음 데이터를 가져이 같은 데이터를 반복하는 jQuery를 사용할 수

:

var HTML; 
var returnedData = $.parseJSON(data); 

$.each(returnedData, function(key, value) { 
    HTML += '<li>' + value + '</li>'; 
}); 

$('.unorderedList').append(HTML); 

그래서 서버에서 데이터를 가져 오는 방법은 입니다.이를 목록에 첨부하십시오. 물론 생성 된 출력을 변경하거나 더 멋진 출력을 위해 JSON 배열을 복잡하게 만들 수도 있습니다. 실제로 이 전체적으로 어떻게 작동하는지를 보지 않고 직접 포인터를 제공하기 어렵다
spryno724

+0

위대한 사람의 덕분에, 나는 다시, 사람을 – littlechad

+0

아니 문제를 감사거야 이것을 시도, 다시 최대한 빨리 당신에 얻을. 희망이 당신을 위해 잘 작동합니다. 아 ... 그리고 위의 기술을 사용하면 배열을 폭발시키기 위해 "jquery.json.js"파일이 필요하지 않습니다. 위에서 데모 된 모든 기능은 jQuery 코어에 내장되어 있습니다. –

+0

정확히 내가 뭘 원했던 것과 같지는 않지만, 당신이 저를 지적한 이유 때문에 새로운 지식을 얻었습니다 :) 어쨌든 어떻게하면 업데이트에 지저분한 코드를 단순화 할 수 있습니까? 감사합니다 – littlechad

0

하지만 도움이

희망, 당신은 이미 페이지에 이러한 요소를 가질 수있다.

<span class="userName" style="font-weight:bolder"></span> posted on <br /> 
<a class="viewer" ></a><br /> 
Created on: <span class="created"></span> 
<!-- ... and so on //--> 

나는 전체 코드를 포함하지 않았지만,이 점을 통해 얻어야한다. jQuery를 사용하여 페이지의 코드를 조작 할 수있다.

$('span.userName').text(user_name); 
$('a.userName').attr('id', postObj.post_id); 
$('span.created').text(postObj.created_timestamp); 
// ... and so on 

당신이 무엇을하고 있는지에 따라,이 작동하지 않을 수 있습니다,하지만 난 당신이 자바 스크립트를 찾고 지저분한 피하려고하는 경우 알고있는 유일한 대안입니다 : 그래서, 상단에서 각 값을 변경. 도움이

희망,
spryno724