通过jQuery数组与php与json

我正在建立一个小购物车。目前,我正在尝试实施检查每个产品库存的结账功能,然后再继续进行付款页面。通过jQuery数组与php与json

这while循环从“购物车”表中显示的每一行:

while ($row = $result->fetch()) { 

echo '<table class="cart-row" cellspacing="0" cellpadding="0" width="100%">';

echo '<tbody>';

echo '<tr>';

echo '<td width="75"><img border="0" width="59px" height="78px" title="" alt="" src=' . $row["ImagePath"] .'></td>';

echo '<td width="203"><span class="itemElements itemName">'. $row["Name"] .'</span></td>';

echo '<td width="203"><input type="submit" class="btnMinus linkbtnType2" value="-"><input type="submit" class="btnPlus linkbtnType2" value="+"></td>';

echo '<td width="135"><span class="qtyNum">('. $row["Qty"] .')</span> <br />';

echo '<input type="hidden" name="ProductId" class="ProductId" value='.$row["ProductId"].' />';

echo '<span class="qtyRemoveLink"><input type="submit" class="btnRemove linkbtn" value="Remove"></td>';

echo '<td width="180"><span class="itemElements orderStatus">In Stock Usually dispatched within 24 hours</span></td>';

echo '<td width="175" class="itemPriceRow"><span id="itemPrice">€ '. $row["Price"]* $row["Qty"] .'</span></td>';

echo '</tr>';

echo '</tbody>';

echo '</table>';

echo '<br>';

}

在该while循环的隐藏输入按钮的值被加载有对应于产品ID返回的行。

现在我有了这个jQuery方法,它应该读取页面中的所有procuctId值并将它们存储在数组中。当我使用萤火传递给该方法的唯一值是productId=%5B%5D

<?php include "../config.php" ?> 

<?php

$productIds = json_decode($_POST['productId']);

var_dump($productIds);

//foreach loop that iterate through an array containing the product IDs and exexcutes the below method.

foreach ($productIds as $productId)

{

$CartDAL = new CartDAL();

$result = $CartDAL->get_ProductInCartById($productId, $_SESSION["username"]);

$result = $ProductsDAL->get_ProductById($productId);

$rowProduct = $result->fetch();

//Get Product Quatity Form Cart

$qty = $row["Qty"];

//Get Product Stock

$stock = $rowProduct["AvailableStock"];

if($qty <= $stock)

{

$CartDAL->remove_ProductInCart($productId, $_SESSION["username"]);

}

else

{

echo $rowProduct["Name"].' is out of stock!';

}

}

?>

不知何故:

$('#btnCheckout').click(function() { 

var productId = new Array();

var j = 0;

$(".ProductId").each(function() {

productId[j] == $(this).val();

j++;

});

$.ajax({

type: "POST",

url: "functions/checkProductStock.php",

data: {

productId: JSON.stringify(productId)

},

success: function (msg) {

alert(msg);

}

})

})

该方法然后转到这些值的PHP方法。 FYI应该传递的值是1和2.任何想法为什么错误的值被读取和传递到数组中?或者,也许我在上述方法中犯了错误?

回答:

只需你可以做到这一点

data: { productId : productId }, 

that's it! now you can access it in PHP:

<? $myArray = $_REQUEST['productId ']; ?>

var myJSONText = JSON.stringify(myObject); 

所以

['Location Zero', 'Location One', 'Location Two']; 

将变为:

"['Location Zero', 'Location One', 'Location Two']" 

数据可以以类似的方式从服务器返回。即你可以把它变回一个对象。

var myObject = JSON.parse(myJSONString); 

看到这个问题

Passing JavaScript array to PHP through jQuery $.ajax

回答:

这是不正确的:

productId[j]==$(this).val(); 

你做一个平等检查==,而不是分配=

更改为:

productId[j]=$(this).val(); 

回答:

Andreas表明,你需要做一个分配=而不是==测试是否相等。这是正确的,我认为你的代码不起作用的原因。然而,有,一个更好的方式来构建整个代码段,使用jQuery的map功能:

$('#btnCheckout').click(function() { 

var productId = $('.ProductId').map(function() {

return this.value;

}).get();

$.ajax({

type: "POST",

url: "functions/checkProductStock.php",

data: {

productId: productId

},

success: function (msg) {

alert(msg);

}

});

});

请注意,我也用同样的技术Kanishka,这样你就可以访问值$_POST['productId']

以上是 通过jQuery数组与php与json 的全部内容, 来源链接: utcz.com/qa/259807.html

回到顶部