gpt4 book ai didi

javascript - Ajax-在 PHP 中使用 Json 时出错

转载 作者:行者123 更新时间:2023-11-29 06:44:36 24 4
gpt4 key购买 nike

我正在尝试使用 Ajax 将 JSON 数据插入到 MySQL 中。但我什么也没得到,查询不起作用。

我尝试了一切,但我不知道问题是在 Ajax、PHP 还是在 JSON 中。

我应该从哪里开始寻找?

JS 代码

$("#btnprueba").click(function () {
var array1 = [];
$("#tabla .DataRow").each(function () {

var firstTableData = {};
var Aidi = $(this).find('td').eq(0).text().trim();
firstTableData.ID_Articulo = $(this).find('td').eq(0).text().trim();
firstTableData.Descripcion = $(this).find('td').eq(1).text().trim();
firstTableData.Valor_Venta = $(this).find('td').eq(2).text().trim();
firstTableData.Cantidad = $(this).find('td').eq(3).text().trim();
firstTableData.Subtotal = $(this).find('td').eq(4).text().trim();
array1.push(firstTableData);

});

var JsonValues = JSON.stringify(array1);
alert(JsonValues);
$.ajax({
type: "POST",
url: "GuardarDatosFactura2.php",
data: "J="+JsonValues,
success: function(response){
alert(response);
},
error: function(e){
console.log(e.message);
},

});

});

变量 JsonValues 中的 Json

[{"ID_Articulo":"001","Descripcion":"Caramelos","Valor_Venta":"6500","Cantidad":"2","Subtotal":"13000"}]

PHP 代码

<?php 
header("Content-Type: application/json; charset=UTF-8");

$CON = mysqli_connect("localhost","root","","BDfactura") or die ("error");

$data = json_decode($_POST['J'],false);

$ID=$data->ID_Articulo;
$Canti=$data->Cantidad;
$Vlr=$data->Valor_Venta;

$cadena2 = "INSERT INTO ItemXVenta (IdArticulo, Cantidad, ValorVenta) VALUES ('$ID','$Canti','$Vlr')";
$create2 = mysqli_query($CON,$cadena2);

if($cadena2){
$MSG= "Se guardaron los datos";
}
else{
$MSG= "No se guardaron los datos";
}
echo($MSG);



?>

最佳答案

Op,不要自己对数据进行 json 编码。让 jQuery 来处理它。或者至少在对象中传递 JSON 编码数据。

您需要做的是将数据作为 javascript 对象传递给 jQuery。这样您就可以让 jQuery 和 PHP 完成所有繁重的工作。

     $.ajax({
type: "POST",
url: "GuardarDatosFactura2.php",
data: {J: array1},
// ^^ Javascript object, passing the array as raw info.
// This way it will be passed as an object to your php.
success: function(response){
alert(response);
},
error: function(e){
console.log(e.message);
},

});

然后在 PHP 中你可以这样做

$data = $_POST['J'];

PHP 应该已经将其转换为原生 php 对象/数组。

只需执行一个var_dump($data); die(); 看看它变成了什么。

如果你的对象嵌套得很深,php 可能不会自动解码它。然后对其进行编码并传递编码后的变量。

data: {J: JSON.stringify(array1)},

在 PHP 中

$data = json_decode($_POST['J'], false);

注意,不是问,而是需要知道!

您在 sql 中使用了未准备变量。

"INSERT INTO ItemXVenta (IdArticulo, Cantidad, ValorVenta) VALUES ('$ID','$Canti','$Vlr')";

不好。如果您的网站将成为面向前端的,那么任何人都可以转储您的数据库,读取您的数据库并对您的数据库造成严重破坏,因为您向他们提供了对您内部的直接访问权限。

请使用prepared statements并且永远不要在没有准备好的语句的情况下使用查询。另外,您也不计算重复的键。如果产品已经存在,则应更新该产品,而不是重新插入。

if ($stmt = $mysqli->prepare("INSERT INTO ItemXVenta (IdArticulo, Cantidad, ValorVenta) VALUES (?,?,?) ON DUPLICATE KEY UPDATE Cantidad=?, ValorVenta=?")) {
$stmt->bind_param("i", $ID);
$stmt->bind_param("s", $Canti);
$stmt->bind_param("s", $Vlr);
$stmt->bind_param("s", $Canti);
$stmt->bind_param("s", $Vlr);

mysqli_stmt_execute($stmt);
}

关于javascript - Ajax-在 PHP 中使用 Json 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50094978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com