0

post.php で、ショッピング カートのテーブル行を削除するスクリプトを作成しました。jquery post でデータを php ファイルに送信しています。これが私のphpファイルです。出力用の配列を作成し、json_encode 関数で json に変換します。

//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 関係を処理できません。手伝って頂けますか ?私はそれを管理できませんでした。

4

2 に答える 2

2

一番上に表示される主な問題は、PHP でデータをエンコードしているが、そのエンコードされたデータを保存または送信していないことです。

json_encode($basket_array);

その呼び出しはエンコードして返しますが、戻り値には何もしません。試す:

echo json_encode($basket_array);

そしてそれがあなたのために何をするか見てください。

クライアント側のコードは確かに優れている可能性があります(4番目のパラメーターに言及している他の回答で説明されているように$.post())が、データの出力を開始すると、クライアントでのJSON処理の現在の方法が機能すると思います。

于 2012-08-09T13:19:33.443 に答える
2

これを試して:

サーバー側 (PHP) では、出力が送信される前に json コンテンツ タイプ ヘッダーを配置します。

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

そして出力を書きます:

echo json_encode(...);

クライアント側 (JS) で、$.post に強制的に JSON データを読み取らせます。

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

ここで使用する必要はありませんJSON.parse()。jQuery がそれを行います。オブジェとしてお使いいただけdataます。

$.post()リクエストを実行した後console.log(data)、出力をデバッグするために a を作成します。そして、ブラウザのデバッグ ツールを使用して、ajax リクエストの出力を監視します。

于 2012-08-09T13:25:23.673 に答える