2012-11-07 54 views
2

我有一些代碼,我打算將其添加到Magento商店,一旦我已經使其在測試頁上工作,但不幸的是它不在測試頁上工作。AJAX&JSON不工作,沒有錯誤或成功處理程序

的JavaScript如下:

function plusAddToCart(qty_textbox_id, prodID, highlight_div_id){ 
var qty = document.getElementById(qty_textbox_id).value; 
qty = parseInt(qty) + 1; 
document.getElementById(qty_textbox_id).value = qty; 
if(qty==0){ 
    $(highlight_div_id).style.backgroundColor = "#f7e9f4"; 
}else{ 
    $(highlight_div_id).style.backgroundColor = "#ebcde5"; 
} 

$.ajax({          
    url: "addtocart.php", 
    data: "prodID="+prodID, 
    type: "POST", 
    dataType: 'json', 
    success: function(data) { 
    alert("DONE"); 
    } 
}); 
} 
</script> 

<div style="width:70px; margin:9px auto 0 auto;"> 
    <input type='button' name='plus' onclick='plusAddToCart("qty1", "693", "product_highlight_693");' id="plus" class="cart-plus-minus" value='+'/> 
    <input name="qty" type="text" id="qty0" readonly="readonly" maxlength="5" value="0" class="quantity-box" /> 
</div> 

PHP:

header("Content-Type: text/html"); 

require_once 'app/Mage.php'; 
Mage::app("default"); 
Mage::getSingleton("core/session", array("name" => "frontend")); 
$session = Mage::getSingleton("customer/session"); 

$userData=Mage::helper('customer')->getCustomer()->getData(); 
$cart = Mage::getSingleton('checkout/cart'); 
$yourProId = $_POST['prodID']; 
$qty=1; 
$params = array('product' => $yourProId, 'related_product' => null, 'qty' => $qty); 
$product = new Mage_Catalog_Model_Product(); 
$product->load($yourProId); 
$cart->addProduct($product, $params); 
$cart->save(); 
Mage::getSingleton('checkout/session')->setCartWasUpdated(true); 
$message = ('Your cart has been updated successfully.'); 
Mage::getSingleton('checkout/session')->addSuccess($message);      

任何人都可以看到一個原因,這是行不通的?

+2

這需要進行基本的調試。我在代碼中看不到錯誤處理程序,你在使用它嗎? JavaScript控制檯是否顯示任何問題? –

+0

在firefox中安裝firebug擴展,並告訴 你在螢幕控制檯響應中看到了什麼....................... –

+0

檢查了我的螢火蟲控制檯並沒有發現錯誤,警告或信息。如果我有點「緩慢」,你也將不得不原諒我,因爲我幾乎是一個PHP開發人員,並且對AJAX和JSON不太瞭解。謝謝。 –

回答

4

的第一步將是一個錯誤處理程序添加到您的AJAX調用:

$.ajax({          
    url: "addtocart.php", 
    data: "prodID="+prodID, 
    type: "POST", 
    dataType: 'json', 
    success: function(data) { 
     alert("DONE"); 
    }, 
    error: function (jqXHR, textStatus, errorThrown) { 
     alert('Not done - ' + textStatus + ' ' + errorThrown); 
    } 
} 

這應該給你的任何問題,一個更好的指標。

更新

在特定情況下,我認爲這個問題是一個組合:

  1. 設置響應數據類型爲「JSON」
  2. 的web服務,不返回任何內容

我認爲請求可能會成功,但是當jQuery試圖解析JSON時,空的響應ca不被解析。如果您將dataType更改爲text,則可以避免此問題,因爲它不會嘗試進行任何解析。

+0

它有!它現在在我的測試頁面上工作,但不在我的Magento頁面上。在我的Magento我得到一個錯誤警告框,但沒有實際的textStatus或errorThrown。 –

+0

我注意到你有Firebug - 你可以在請求發出前打開「Net」標籤,看看這個標籤中是否顯示了一個請求(你可以在「Net」標籤的「All」或「XHR」面板中看到它 – Fenton

+0

是的,我收到一個POST鏈接到我的addtocart.php狀態是200 OK –

相關問題