2016-09-24 13 views
0

この問題でどこが間違っているのか分かりません。それはすべてうまく動作していたものの1つで、調整を加えた後、私は眠りに落ち、私のしたことを思い出すことができません。ので、私の問題は、この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エラーを行うとき、私は応答して機能を取得します。

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呼び出しを関数に行くためにイベントハンドラを持っている:ここ

が呼び出されている私のPHPファイルである

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

Iこれは本当に愚かなことだと思うけど...しかし、私はどこからエラーが出てくるのか、なぜページがリフレッシュしているのか分からない。

火災のバグでは、ファイルは赤色で表示され、リクエストヘッダーとレスポンスヘッダーのみが表示されます。私の本当のキッカーは、phpファイルが実際に想定されているような情報を処理し、返されるべきjsonが有効なjsonになるということです。

私のコードを笑ってはいけません。もしあなたが私が批評をうまく取るのを手助けしたいのであれば。私をひいきにしないでください。

+0

あなたが疲れていても、適切で完全なコードです。 AJAX呼び出しやそれに 'href'属性を持つ他の要素をトリガーするリンクをクリックしていますか?もしそうなら 'event.preventDefault()'を追加してください。 –

+0

不完全なコードが残念です。私は実際のイベントハンドラと関数名を残しただけです。もう一度起きないでしょう –

+0

あなたは絶対に正しいコードスピリットでした。私が眠りにつく前に行った変更の1つは、一般的なevent.preventDefault()をオフにして、まったく違うものをトラブルシューティングすることでした。 –

答えて

0

ちょうど必要event.preventDefault()...ありがとうコードスピリット

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'はオブジェクトなので、インデックスはありません。 { FOO: 'バー'、 参照:真、 ジー:偽 等...など。 } –

+0

@CodeSpiritは、オブジェクトは、インデックスが.. ただ、これを見ています名。それはしばしば、連想配列、リンクされたリストまたは類似しているが、実際にはそのプロパティ(オブジェクトのメンバー)と混ざっている。 – Syncro

関連する問題