jquery ajax刷新失败的回调页面

时间:2016-09-24 23:14:50

标签: javascript php jquery json ajax

所以我不确定我在这个问题上出了什么问题。它是其中之一,一切正常,我做了一个调整,然后我睡着了,不记得我做了什么。所以我的问题是这个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。

请不要嘲笑我的代码...如果你想帮助我很好地接受批评;但请不要光顾我。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

只需要event.preventDefault()...感谢Code Spirit