2013-01-22 55 views
1

我正在爲學校的網上商店工作。我試圖製作一個jquery/ajax購物車系統。Jquery .load()不給HTML返回(在URL中有一個「」空格!)

現在,這是我的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' doesn '不會顯示在我的index.php

你能幫我一下嗎?

PS:

如果我去:

cart.php命令= addToCart &的productID = 28 &量= 10 &大小= 12 & PRODUCT_NAME =測試

它給這個回

1 
0 
28 
Test 
10 
12 

在HTML中,所以腳本的作品,並給HTML回來! 我在加載產品時也是這樣做的,它的功能就像魅力一樣。

+2

Dainis,它不需要。它會根據jQuery文檔將響應放入#cart_page元素中:http://api.jquery.com/load/ – Dean

+0

@DainisAbols你能解釋一下你的意思嗎?如果沒有指定響應,它應該給整個頁面返回它產生的權利? 這是我將我的產品加載到index.php中的方式,這種方式就像魅力一樣。 (「#cart_page」)。load(「products.php?id =」+ productID +「」);' –

+2

嘗試使用類似於:'$(「#cart_page」)。load(「cart.php?blahblahblah 「,function(responseText,textStatus,req){if(textStatus ==」error「){alert(」fail「);} else {alert(」success「);}});'看看有什麼警報。 – Ian

回答

0

所以這麼愚蠢。 。

我生成的$product_name來自數據庫。

這個名字裏有一個「」空格。

這樣做是爲了加載腳本的成功,但因爲它在URL中有一個空格,所以jQuery將它視爲不正確的URL並且不會將腳本嵌入到頁面中。

我覺得奇怪的是它沒有給我任何錯誤回來!

非常感謝你們幫助我!

+1

urlencode你將來從數據庫中拉出的值;-) – Dean

+0

@Dean是的男人!你是完全正確的! –

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點代碼的格式我不知道如何使用此語法的列表中嵌入代碼。一個縮進不工作)

+0

Heey Dean,謝謝你的回答 1.它在同一個域中。沒有跨域請求。 2.謝謝你的擡頭。我已經用'$(「#cart_page」)進行了測試。load(「products.php?id =」+ productID +「」);' 這會將所有產品加載到div cart_page中 3. console是totaly empty,沒有錯誤或如此。 –

+1

轉至Web Inspector(在Chrome中)的「網絡」選項卡並調試實際的HTTP請求。你在「迴應」中看到什麼?即您應該看到相同的輸出,就像直接進入它一樣。 – Dean

+0

@死網絡標籤真的不錯! 在預覽中,我看到相同的輸出作爲cart.php直接給我 所以我想我可以假設標題發送正確 –

相關問題