2013-02-16 8 views
0

를 추가 나는 함수에서 이것을 사용JSON 구문 분석 및 형식

$.ajax({ 
    type: 'POST', 
    url: 'demopost.php', 
    data: { ... }, 
    dataType: 'json', 
    success: function(data) 
    { 
      console.log(data); 
    } 
    }); 

demopost.php 만 쿼리가 포함되어 있습니다.

enter image description here

을하지만 그것은 사업부 내에서 방법을 표시 할 수 있습니다 :

출력이 될 것인가? 또는 어떻게 구성을 추가 할 수 있습니까? foreach와 PHP 배열처럼?

편집 : 나는 (데이터)이 (CONSOLE.LOG의 장소 시도 :. 물론와 클래스 내부 그러나 아무것도 사업부가 있었다

$('.inner').append(data); 

보여

EDIT2 : demopost.php 쿼리 : 어떤 이유로 당신은 그냥 원하는 경우에 당신은 당신이 보내는 데이터를 처리하지 않으면 당신은 Ajax를 사용하는을 위해

... try 
     { 
      $c_id = htmlspecialchars($_POST['cid']); 
      $leftprice = $_POST['left']; 
      $rightprice = $_POST['right']; 
      $items=$main->pdo->prepare("SELECT name, price FROM clf_items WHERE category_id IN (
       SELECT node.id 
       FROM clf_category AS node, 
       clf_category AS parent 
       WHERE node.lft BETWEEN parent.lft AND parent.rgt AND price BETWEEN :left AND :right 
       AND parent.id = :c_id)"); 
      $items->execute(array(':c_id' => $c_id, ':left' => $leftprice, ':right' => $rightprice)); 
      $items_array = array(); 

      while ($row = $items->fetch(PDO::FETCH_ASSOC)) 
      { 
       $items_array[] = $row; 
      } 
     echo json_encode($items_array);exit; 
     }... 
+0

당신이 원하는 것은 매우 혼란 스럽습니다. actully를 설명해주십시오. – rohitarora

+0

은 아약스를 발사하는 페이지에 결과를 표시하고자 함을 의미합니다. 권리? –

+0

콘솔 출력에서 ​​img를 볼 수 있지만 출력을 div에 넣고 몇 가지 형식을 추가하려고합니다. 예 : Dell 노트북 - 105000 - 새로운 라인 - 도시바 .... – Gery

답변

2

여기서하고있는 일은 자바 스크립트로 읽을 수있는 서버의 일부 JSON 데이터를 반환하는 것이지만 일부 처리없이 HTML에 푸시하는 것은 유용하지 않습니다.

하나의 해결책은받은 JSON 배열을 HTML 문자열로 변환 한 다음 페이지로 가져 오는 것입니다. 이하지 돈이 HTML은 등 쪽, 매우 원유 레이아웃을 탈출하지 서식하고있다 이제

success: function(data) 
{ 
    var result = '<table>'; 
    for (i=0; i<data.length; i++) { 
     result += '<tr><td>'+ data[i].name+'</td><td>'+data[i].price+'</td></tr>'; 
    } 
    result+= '</table>'; 
    $(".inner").html(result); 
} 

당신은 내가 사용할 수있는 다양한 템플릿 엔진에보고하는 것이 좋습니다 유용한 무언가에이 원료 스케치를 만들려고하기 전에. 같은이 보일 수 있습니다 jQuery; 이 게시물에 나열된 몇 가지 : jQuery Templates are deprecated? (질문과는 달리 jQuery 템플릿은 죽지 않지만 경쟁이 있습니다.)

그러나 다른 접근 방식을 선호합니다 : JSON 대신 HTML 서버 측을 작성하여 PHP에서 전체 HTML 페이지를 리턴하는 것과 같은 방식으로 HTML 코드를 리턴하고 Ajax 요청에서 원하는 것을 말하십시오. HTML : dataType: 'html',을 입력 한 다음 원래 결과를 $(".inner").html(data) (또는 $(".inner").append(data), HTML이 어떻게 보일지 알 수 없음)으로 직접 푸시 할 수 있습니다.

나는 이것이 schwierig가 말하고 싶어했던 것과 같다고 생각하지만, 더 명확하게 말할 필요가 있다고 생각한다.

+0

이제 제대로 작동하지만 html dataType을 사용 하시겠습니까? 이제 dataType을 json 대신 html로 변경하고 echo $ items_array를 작성했습니다. echo 대신 json_encode ($ items_array); exit; demopost.php에서 이제는 "Notice : Array to string conversion in ..."이라고 말하면 print_r과 var_dump는 괜찮습니다. 어떻게 루프 할 수 있습니까? – Gery

+0

물론'echo $ items_array'는 html을 생성하지 않습니다. 루프를 작성하는 방법에 대한 PHP 설명서를 확인하십시오. http://www.php.net/manual/en/language.control-structures.php –

+0

PHP에서 루프를 알고 그것을 할 수 있습니다 : foreach ($ items_array as $ itemsarray) { \t \t echo $ itemsarray [ '이름']; \t \t echo $ itemsarray [ 'price']; } demopost.php에서. 하지만 PHP 파일 – Gery

1

데이터 형식을 지정하면 실제로 그렇게 할 PHP가 필요하지 않습니다.

물론 가능합니다. 당신은 PHP로 처리하려는 경우 당신은 당신의 포맷 된 결과를 에코와의 jQuery API에 설명 된대로 .done() 기능을 사용할 필요가

http://api.jquery.com/jQuery.ajax/

+0

변경 이벤트 (jquery UI 슬라이더)에서 실행되므로 변경된 경우 새 쿼리는 가격에 따라 새로운 결과를 표시해야합니다. – Gery

+0

귀하의 PHP 스크립트에서 id (또는 다른 사람이 건네주는 것)를 처리하고 슬라이더를 변경하는 데 필요한 데이터로 응답 할 수 있습니다. 응답을 처리하려면 – Schwierig

+0

을 추가해야합니다. .done (function (data) { \t $ ('. inner') .append (data); \t alert ('ok'); }}); 알림 만 작동합니다 – Gery

0
$.post('demopost.php',{..}, function(data) { 
    $('.inner').html(data); 
}); 

가 도움이 사업부를 가지고 있는지 확인합니다 희망이 하나를 시도 내부 클래스 사용