2012-08-09 7 views
0

장바구니에서 테이블 행을 삭제하기 위해 post.php에 스크립트를 작성했습니다. 난 jquery 게시물과 함께 데이터를 PHP 파일에 보내고있다. 여기에 내 PHP 파일입니다. 나는 출력을위한 배열을 만들고 나는 json_encode 함수로 json으로 변환했다.PHP json_encode to Jquery

//Sepetteki Ürünleri Siliyoruz 
if(isset($_POST['deleteditems']) && isset($_SESSION['userid'])) { 
    $deleted_items = $_POST['deleteditems']; 
    //echo $_POST['deleteditems']; 
    $sql = "DELETE FROM basket WHERE productid IN ($deleted_items) AND userid = ".$_SESSION['userid']; 
    //echo $sql; 
    $query = mysql_query($sql); 
    $basket_array['queryresult'] = ($query) ? "<i class=\"icon-ok\"></i> Silindi" : "<i class=\"icon-remove\"></i> Hata: Silinemedi"; 

    $basket_sql = "SELECT p.productid, p.wholesaleprice, p.minquantity, p.vat, b.quantity 
        FROM basket AS b, product AS p 
        WHERE b.productid = p.productid AND b.userid = ".$_SESSION['userid']; 
    $basket_query = mysql_query($basket_sql); 
    $num = mysql_num_rows($basket_query); 
    if ($num > 0) { 
     while ($row = mysql_fetch_array($basket_query)) { 
      $wholesaleprice = round($row['wholesaleprice']/(1+$row['vat']/100),2); 
      $total_quantity = $row['quantity']*$row['minquantity']; 
      $sumnovat[] = $total_quantity * $wholesaleprice; 
      $vats[] = array($row['vat'], round(($row['vat']/100)* $total_quantity * $wholesaleprice,2)); // KDV'yi hesaplıyoruz 
     } 

    foreach ($vats as $vat) { 
     $group_by_ratio_vat_sum[] = $vat[0]; 
    } 
     $group_by_ratio_vat_sum = array_unique($group_by_ratio_vat_sum); 
     $group_by_ratio_vat_sum = array_fill_keys($group_by_ratio_vat_sum,0); 

    foreach ($vats as $vat) { 
     $number = str_replace(",", ".", $vat[1]); 
     $group_by_ratio_vat_sum[ $vat[0] ] += (float)$number; 
    } 
     $total_vat = 0; 

     $basket_array['tfoot'] = '<tr class="basket_totals"><td colspan="5" class="basketresulttitle">'._('Ara Toplam').'</td><td colspan="3">'.number_format($sumnovat = array_sum($sumnovat),2).' TL</td></tr>'; 

      foreach ($group_by_ratio_vat_sum as $vat_ratio => $vat_total) { 
       $basket_array['tfoot'] .= "<tr class=\"basket_totals\"><td colspan=\"5\" class=\"basketresulttitle\">"._('KDV')." (%$vat_ratio)</td><td colspan=\"3\">".number_format($vat_total,2)." TL</td></tr>"; 
       $total_vat += $vat_total; 
      } 

     $basket_array['tfoot'] .= '<tr class="basket_totals"><td colspan="5" class="basketresulttitle">'._('Genel Toplam').'</td><td colspan="3">'.number_format($sumnovat + $total_vat,2).' TL</td></tr>'; 

     json_encode($basket_array); 
    } 
} 

여기 내 jquery 코드입니다. 내 jquery 스크립트에서 json 객체를 사용하고 싶습니다. 그러나 나는 그것을 할 수 없었다. 왜냐하면 나는 json-jquery-php 관계에 대한 신인이기 때문입니다. 너 나 좀 도와 줄 수있어?

$('#basket_delete_button').live('click',function(){ 
    var loading = '<img src="<?php echo URL; ?>images/style/loading.gif" width="16" height="16">'; 
    $('.loading').html(loading); 
    var deleteditems = $('tbody tr input:checkbox[name="delete_basket[]"]:checked') 
            .map(function() { return $(this).val() }) 
            .get() 
            .join(","); 

    $.post('post.php',{deleteditems: deleteditems},function(data){ 
      var obj = JSON.parse(data); 
      $('tfoot').html(obj.tfoot); 
      $("tbody tr :checked").each(function() { 
       $(this).parent().parent().remove() 
      }); 

     var rowCount = $('.basket_products_row').length; 
     if (rowCount == 0){ 
       $('#basket_area').html("<?php echo $basket_error; ?>"); 
       $('#basket_count').text('0'); 
     } else { 
       $('.loading').html(obj.queryresult); 
     } 
      });        
     }); 

jquery json php 관계를 처리 할 수 ​​없습니다. 너 나 좀 도와 줄 수있어? 나는 그것을 관리 할 수 ​​없었다. 돈을 인코딩 반환 전화

json_encode($basket_array); 

있지만 :

+1

질문에 대답하는 데 도움이되지 않을 수도 있지만 mysql_ * 함수 사용을 중단해야합니다. 그들은 더 이상 사용하지 않을 것입니다. 대신 [PDO] (http://php.net/manual/en/book.pdo.php) (PHP 5.1 이상 지원) 또는 [mysqli] (http://php.net/manual/en/book)를 사용하십시오. mysqli.php) (PHP 4.1부터 지원). 어느 것을 사용해야할지 잘 모르겠다면 [이 SO 기사를 읽으십시오] (http://stackoverflow.com/questions/13569/mysqli-or-pdo-what-are-the-pros-and-cons). – Matt

답변

2

이 시도 : 출력

header('Content-type: application/json'); 

를 쓰기 :

echo json_encode(...); 
어떤 출력 전송 전에

서버 측 (PHP)에

하는 JSON 콘텐츠 타입 헤더 넣어

클라이언트 측 (JS)에서 $. post가 JSON 데이터를 읽도록합니다.

$.post('someurl.php', 
    {foo:'bar'}, 
    function(data){}, 
    'json' // <--- here 
); 

여기에 JSON.parse()을 사용할 필요는 없지만 jQuery가 대신 사용합니다. data을 개체로 사용할 수 있습니다.

$.post() 요청을 수행 한 후에 출력을 디버그하려면 console.log(data)을 만드십시오. 브라우저의 디버그 도구를 사용하여 ajax 요청 출력을 봅니다.

+0

작품! 감사 –

2

내가 바로 위에 떨어져 볼 수있는 주요 문제는 PHP에서 데이터를 인코딩하는,하지만 당신은 그 인코딩 된 데이터를 저장하거나 전송하지 않는 것입니다 돌아 오는 일에 아무 것도하지 마라. 시도해보십시오 :

echo json_encode($basket_array); 

그리고 그게 당신을 위해 무엇을 참조하십시오. 하지만 난 당신이 데이터를 출력하기 시작하면 클라이언트에서 JSON 처리의 현재의 방법을 작동합니다 생각 ($.post()에 4 PARAM을 언급 다른 답변에 설명 된대로)

클라이언트 측 코드는 확실히 더 좋을 수 있습니다.

+0

여기 에코 쓴 출력 { "queryresult"이다 "<\/i> Silindi", "TFOOT": " 아 Toplam <\/td> \t 702.04 TL <\/td><\/tr> KDV (18 %) <\/td> \t 126.36 TL <\/td><\/tr> GENEL Toplam <\/td> \t 828.40 TL <\/td><\/tr> "} –