1

jquery/ajax私は学校のウェブショップで働いています。カートシステムを作ろうとしています。

これが私のjquery.load();コードです

//LOAD PHP FUNCTION TO ADD TO CART
        $("#cart_page").load("cart.php?command=addToCart&productID="+productID+"&size="+size+"&amount="+amount+"&product_name="+product_name+"");

これはcart.phpファイルです:

<?php

//ADD PRODUCTS TO CART
if($_GET['command'] == 'addToCart'){
    /********* START SESSION *********/
    session_start();

    if($_GET['productID'] == "" || $_GET['amount'] < 1 || $_GET['size'] == "" || $_GET['product_name'] == "") return;

    $max=count($_SESSION['cart']);

    if(is_array($_SESSION['cart'])){
        $max=count($_SESSION['cart']);

        for($i=0;$i<$max;$i++){
            if($_GET['productID'] == $_SESSION['cart'][$i]['productid']){
                if($_GET['size'] == $_SESSION['cart'][$i]['size'] ){
                    $product_exists = 1;
                }   
            }
        }

        if($product_exists != 1){
            $_SESSION['cart'][$max]['productid'] = $_GET['productID'];
            $_SESSION['cart'][$max]['product_name'] = $_GET['product_name'];
            $_SESSION['cart'][$max]['amount'] = $_GET['amount'];
            $_SESSION['cart'][$max]['size'] = $_GET['size'];
        }

    }else{

        $_SESSION['cart']=array();
        $_SESSION['cart'][0]['productid'] = $_GET['productID'];
        $_SESSION['cart'][0]['product_name'] = $_GET['product_name'];
        $_SESSION['cart'][0]['amount'] = $_GET['amount'];
        $_SESSION['cart'][0]['size'] = $_GET['size'];

    }

if(is_array($_SESSION['cart'])){
$max=count($_SESSION['cart']);
$cart = <<<EOD
<div class="cart_page">
    <div class="cart_product_line">
    $max
        <ul>

EOD;
        for($i=0;$i<$max;$i++){
            $arrayID = $i;
            $cart_productID = $_SESSION['cart'][$i]['productid'];
            $cart_productName = $_SESSION['cart'][$i]['product_name'];
            $cart_amount = $_SESSION['cart'][$i]['amount'];
            $cart_size = $_SESSION['cart'][$i]['size'];

$cart.= <<<EOD
            <li>$arrayID</li>
            <li>$cart_productID</li>
            <li id="$cart_productID">$cart_productName</li>
            <li class="amount">$cart_amount</li>
            <li class="size">$cart_size</li>
EOD;
        }

$cart.= <<<EOD
        </ul>
    </div>
</div>
EOD;
    }
}
echo $cart;

?>

今、それは私がやりたいことをすべて行います。しかし、それがもたらす結果'echo $cart.php'は私のindex.phpに表示されません

助けてくれませんか?

PS:

私が行く場合:

cart.php?command = addToCart&productID = 28&amount = 10&size = 12&product_name=テスト

それはこれを返します

1
0
28
Test
10
12

HTMLであるため、スクリプトが機能し、htmlが返されます。商品の読み込みについても同じことをしていますが、それは魅力のように機能します。

4

2 に答える 2

1

あなたが言ったことすべてが真実であると仮定すると、ここでうまくいかない可能性のあることがいくつかあります(可能性の高い順に):

  1. AJAX 呼び出しは別のドメインに対して行われていますか? その場合、いくつかの特別なヘッダーを出力しない限り、これは機能しません。
  2. 対象の要素が存在しない場合、jQuery.load は失敗します。そのため、ページに #cart_page 要素があることを再確認してください。
  3. AJAX ページが正しい HTTP 応答コードを返していません。これはコンソールに表示されます。ただし、コードを次のように展開すると、より多くの情報を取得できます。

    $("#cart_page").load("cart.php?command=addToCart&productID="+productID+"&size="+size+"&amount="+amount+"&product_name="+product_name+"", function(response, status, xhr) { if (status == "error") { console.log("Error code :" + xhr.status); // error code console.log ("Error text :" + xhr.statusText); // error text } });

  4. その他の JS エラー。あなたのコードのすべてを見ることができないので、これはわかりにくいです。コンソールでエラーを確認し、最初の投稿に追加してください。

(ポイント 3 のコードの書式設定については申し訳ありません。この構文を使用してコードをリストに埋め込む方法がわかりません。インデントは機能しません)

于 2013-01-22T14:35:28.130 に答える
0

だからとても愚かな..

$product_name私が生成したのはデータベースからのものでした。

この名前には「」スペースが含まれていました。

これにより、スクリプトの読み込みに成功しましたが、URLに ""スペースが含まれていたため、jQueryはそれを誤ったURLと見なし、スクリプトをページに埋め込みません。

私が奇妙だと思うのは、それが私にエラーを返さなかったということです!?

助けてくれてありがとう!

于 2013-01-22T15:08:33.370 に答える