2016-09-24 108 views
0

所以我只是不知道我在這個問題上出錯了。這是其中一件事一切正常,我做了調整,然後我睡着了,不記得我做了什麼。所以我的問題是,這個AJAX調用失敗:jquery ajax刷新失敗的回調頁面

var url = 'lib/php/addToCart.php'; 
    var sent = $.post(url, data, null, 'json'); 
    sent.done(function (data) { 
     $('.badge').html(Object.keys(data).length); 
     console.log('item added to cart'); 
     alert("Added To Your Cart. Please Continue Shopping"); 

    }); 
    sent.fail(function (data, b, c) { 

     console.log("failed adding item: " + c); 
     var propValue; 
     for(var propName in b) { 
      propValue = b[propName]; 

      console.log(propName,propValue); 
     } 
    }); 

唯一的錯誤,我可以從失敗得到的是「錯誤」,當我做jqXHR錯誤我響應得到一個功能。

這裏是被稱爲我的PHP文件:

session_start(); 

$itemNum = $_POST['upc']; 
$price = $_POST['price']; 
$title = $_POST['title']; 
$qty = 1; 
$cartData = $conn->prepare("SELECT available FROM yardSale.dvdTbl WHERE upc = ?"); 
$cartData->bind_param("s", $itemNum); 
$cartData->execute(); 
$cartData->store_result(); 
$cartData->bind_result($available); 
$cartData->fetch(); 
$linePrice = $price * $qty; 

$cartName = $title; 

$_SESSION['cart'][$cartName] = array(
    "cartName" => $cartName, 
    "itemNum" => $itemNum, 
    "title"  => $title, 
    "itemPrice" => $price, 
    "linePrice" => $linePrice, 
    "qty"  => $qty, 
    "available" => $available 
); 


echo json_encode($_SESSION['cart']); 

,然後如果你需要它,我有一個事件處理程序去用Ajax調用的函數:

event.stopImmediatePropagation(); 
    var upcNum = $(this).attr('id'); 
    var formID = 'info:' + upcNum; 
    console.log(upcNum); 
    var formData = $(this).serialize(); 
    console.log(formData); 
    addItem(formData); 

我我確定這是另一個我真正愚蠢的事情,但我無法弄清楚錯誤會從哪裏來,或者爲什麼頁面更新。

在fire bug中文件只顯示爲紅色,只有請求標題,沒有響應標題。對我來說真正的踢球者是php文件實際上處理了它應該的信息,應該返回的json將是有效的json。

請不要嘲笑我的代碼......如果你想幫助我很好地接受批評;但請不要光顧我。

+0

即使你累了,你應該提供o非常相關和完整的代碼。 你是否點擊了觸發AJAX調用的鏈接或者其他具有'href'屬性的元素?如果是這樣,你應該添加'event.preventDefault()'。 –

+0

對不起,不完整的代碼。我只留下了實際的事件處理程序和函數名稱。不會再發生 –

+0

,你完全正確的Code Spirit。我在睡着之前做出的其中一項改變是關閉一般event.preventDefault()來排除完全不同的事情。 –

回答

0

只需要event.preventDefault()...謝謝Code Spirit

0

我認爲錯誤是在這部分代碼:

for(var propName in b) { 
    propValue = b[propName]; 
    console.log(propName,propValue); 
} 

變量PROPNAME不是指數不過是,所以你必須做這樣的事情:

for(var propIndex in Object.keys(b)) { 
    propValue = b[propIndex]; 
    console.log(propIndex,propValue); 
} 
+0

我不確定這是什麼問題,因爲即使我沒有這個代碼,錯誤仍然會發生。但我認爲你幫我解決了我遇到的另一個問題! –

+0

我猜'b'是一個對象,所以它沒有任何索引。 –

+0

@CodeSpirit在Javascript中,對象具有指標.. 只要看看這個: { 富: '棒', 看:真, 哎呀:假 等。等等。 } – Syncro