我从PHP脚本生成JavaScript,我需要能够将值直接复制到生成的JavaScript代码中。
我的代码如下:
PHP:
include "db-Info.php";
echo '<option value="">Please select item first...</option>';
$item = $_POST['itemId'];
$query = mysqli_query($con, "SELECT id, item, price, pointRequired FROM
tblprice WHERE item ='$item'");
$rowCount = $query->num_rows;
if($rowCount > 0) {
while($row = mysqli_fetch_array($query)){
$price = $row['price'];
$pointRequired = $row['pointRequired'];
echo "<option id='priceNew'>";
echo "Price : $price" ?> <?php echo "Point: $pointRequired";
echo "</option>";
}
if($item){
$price = $_POST[price];//shows undefined
$query1 = mysqli_query($con, "SELECT id FROM tblprice WHERE item
='$item'AND price ='$price'"); //it seems not picking up the same id with
the item I selected above
$rows = mysqli_fetch_array($query1);
$id = (string) reset($rows);
$barcodeNew = $id . $item;
echo $barcodeNew;
}
}
JavaScript的:
$(document).ready(function() {
$('#price-select').on('change', function(){
var price = $(this).val($price); // This is where $price needs to copy
if(price){
$.ajax({
type:'POST',
url: 'functions/pos-getPrice.php',
data: {price:price},
success:function(html){
alert(price);
}
})
}
})
})//THIS CODE BLOCK IS PROBLEM
问题是:
$price = $_POST[price]
会产生未定义的值$price
复制到PHP脚本中,但它在我的脚本中逐字输出$price
- 而不是$price
中包含的值答案 0 :(得分:1)
问题1:
您需要将$_POST[price]
更改为$_POST['price']
,就像您刚刚在其上方一样。如果不将它包装在引号中,PHP将假设您正在尝试使用define()
定义的常量。
问题2:
如果您正在使用vanilla PHP并且想要将一个变量注入脚本,那么您可以这样做:
var price = ($this).val(<?php echo json_encode($price); ?>);
这当然假设JavaScript是从您上面的相同PHP脚本生成的。
您可以阅读json_encode
here的文档。
您的代码中也存在巨大的安全漏洞:
目前,您的脚本直接从用户请求中获取数据并将其放入SQL查询中。这可能导致SQL注入攻击。不好。
可以找到关于该主题的官方PHP文档here。
<强>建议:强>
首先,我注意到你正在全球范围内做所有事情。我强烈建议您学习如何将代码包装在类和函数中;它会让事情变得更容易维护和测试。
搜索的好东西会让你走上正确的道路:
其次,以这种方式做事已经过时了,很容易遇到问题。我鼓励您研究更现代的框架,例如Laravel。您还可以查找单页应用程序(SPA)框架,例如Vue,Angular或React,这些框架与Laravel充当后端REST API非常有用。
祝你好运。