php - AJAX 和 JSON 不起作用,没有错误或成功处理程序

标签 php ajax json magento

我有一些代码,计划在测试页面上运行后将其添加到 Magento 商店中,但不幸的是它无法在测试页面上运行。

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);                    

有人能看出这行不通的原因吗?

最佳答案

第一步是向 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. 网络服务不返回任何内容

我认为请求可能会成功,但是当 jQuery 尝试解析 JSON 时,无法解析空响应。如果将 dataType 更改为 text,则可以避免此问题,因为它不会尝试任何解析。

关于php - AJAX 和 JSON 不起作用,没有错误或成功处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13269057/

相关文章:

php - 从 PHP 页面链接到在固定大小的窗口中打开

javascript - 如何将 PHP MySQL 与 NodeJS 和 SocketIO 结合使用

c# - gridview 行上的 Ajax 动画

php - 从 php 到 iOS 应用程序的 json 响应不完整

PHP 在多维数组中查找数组

php - 正则表达式在字符串中查找单词

php - 将数据从PHP发送到jQuery

json - 快速将 json 解码为通用数组或类

javascript - 单击列表项后显示子列表

php - CodeIgniter DataMapper ORM v1.8.0 - 如何从多个表中获取记录