2013-03-28 2 views
2

jquery ajax 호출에 응답하는 함수를 작성하고 있습니다. PHP를 처음 사용하고 echo를 올바르게 사용하는 방법을 배웠습니다. . json_encode(array('error' => false/true;이 특정한 경우 JSON 인코딩에 $list라는 배열의 배열을 원하는 내 코드 :.?echo json_encode의 올바른 사용 (array ('error'=> false/true.)

<?php 
if (!empty($_GET['id'])) { 
    $id = $_GET['id']; 

    try { 
    $objDb = new PDO('mysql:host=localhost;dbname=blankett', 'root', 'root'); 
    $objDb->exec('SET CHARACTER SET utf8'); 

    $sql = "SELECT * FROM `forms2` where `master_id` = $id"; 
    $list = ($objDb->query($sql)); 

    foreach ($list as $row) { 
     $out = array(
      '<tr>' . 
      '<td><a href="'.$row['link_form'].'">'.$row['name_form'].'</a></td>'. 
      '<td>'.$row['date_added'].'</td>' . 
      '</tr>'); 
    } 
    echo json_encode(array('error' => false, 'list' => implode('', $out))); 

    /*** close the database connection ***/ 
    $objDb = null; 
    } 
    catch(PDOException $e) 
    { 
    echo $e->getMessage(); 
    } 
} else { 
    echo json_encode(array('error' => true)); 
} 
?> 

그래서 질문은 당신이 json_encode(array('error' => false/true;을 사용합니까 어떻게 내가이 특정한 경우에 사용 얼마나 일반적이다

+0

PHP를 처음 사용하고 MySQL_ * 대신 PDO를 사용합니까? +1 – Jimbo

+0

예, PHP를 처음부터 끝까지 새로 도입했습니다. – StenW

답변

1

첫 루프의 첫 번째 행은 에서 검색 한 마지막 행만 할당합니다. $ list$ out. 둘째 implode는 배열을 매개 변수로 사용하지 않고, 사용자가 제공 한 구분 기호로 구분 된 문자열을 반환합니다.

 $out = array(); 
    foreach ($list as $row) { 
     $out[] = '<tr><td><a href="'.$row['link_form'].'">'.$row['name_form'] . 
       '</a></td><td>'.$row['date_added'].'</td></tr>'; 
    } 

    echo json_encode('error' => false, 'list' => $out); 

또는 당신이 $out

+0

이 코드는 제대로 보이지만 붙여 넣을 때 오류가 발생합니다. – StenW

1

에 그랬던 것처럼 배열 한 후 내파를 사용하는 대신 문자열을 전달하려는 경우 : 여기

php.net/implode

당신이 뭘 하려는지입니다 다음과 같이 할 수 있습니다.

$result = true; 

    echo json_encode(array("error"=>$result 
           )); 

다음 : 일반적으로

$.ajax({ 
    type: "POST", 
    url: "yourfile.php", 
    data : "data1="+yourdata1+"&data2="+yourdata2, 
    dataType: "json", 
    success: function (data) { 
    var error = data['error']; 
    if(error === false){ 
    //do something             
    } 
if(error === true) { 
    //do something else  
} 
    } 
     });//end ajax    
1

, 당신은 나처럼 아무것도 '내파'할 필요없이 데이터를 직접로 json_encode 사용할 수 있습니다. $ 아웃 배열의 배열, 다음 코드가 있었다면

:

echo json_encode(array('error' => false, 'list' => implode('', $out))); 

생산겠습니까 :

echo json_encode(array('error' => false, 'list' => $out)); 
: 당신은 대신로 json_encode이 그것을 할 수 있도록해야

{ result: false, list: 'Array,Array,Array' } 

하는 일이다

다음 중 어느 것이겠습니까?

{ result: false, 
    list: 
    [ [ 1, 2, 3 ], 
    [ 4, 5, 6 ], 
    [ 7, 8, 9 ] ] } 

루프에 대한 이전 의견은 중요합니다. 루프는 매 반복마다 $ out 변수를 재 할당합니다. 확실히 just = 대신에 [] =를 추가하고 싶습니다. 이것은 PHP에서 "내 배열에 푸시 (push this my array)"라는 의미의 바로 가기입니다. 즉, 당신이 원하는 무엇을하지 않는 한, 사실 array_push()

foreach ($list as $row) { 
    $out []= array('<tr><td><a href="'.$row['link_form'].'">'.$row['name_form'].'</a></td> <td>'.$row['date_added'].'</td></tr>'); 
} 

그리고 마지막으로,이없는 않는 테이블 행에 배열 될에 대한 바로 가기입니다.

관련 문제