gpt4 book ai didi

javascript - 创建和循环 json 对象时出现问题

转载 作者:行者123 更新时间:2023-12-03 06:04:36 24 4
gpt4 key购买 nike

我正在尝试在js中创建一个json对象,使用ajax将其发送到php页面并在php页面中循环遍历它。

我的代码如下

表单页面

<html>
<body>
Input 1: <input type="text" data-id="1" data-old="30"/><br>
Input 2:<input type="text" data-id="2" data-old="40"/><br>
Input 3:<input type="text" data-id="3" data-old="50"/><br>

<input type="text" id="max" value="3" hidden/>

<button type="button" id="proceed">Go</button>
</body>
</html>

js

$("#proceed").on("click",function(){
var num=$("#max").val();
var array=[]; //[] or {} ??
for(i=1;i<=num;i++){
var old=$('input[data-id="'+i+'"]').data("old");
var new=$('input[data-id="'+i+'"]').val();
var deduct;
if(new!==old && new!==""){
deduct=old-new;
array.push({"pid":i,"deduct":deduct});
}

var updateArray = JSON.stringify(array);
$.ajax({
type:"POST",
url:"../control/stock-c.php",
data:{updateArray:updateArray, func:"manualSync"},
dataType:"json",
success:function(){
alert("yay");
}
});

}
});

stock-c.php

require_once '../model/stock-m.php';
$updateArray=$_POST["updateArray"];
$array= json_decode($updateArray);
$obj=new Stock();
foreach($array as $obj1){
$result=$obj->deductMainstock($obj1->pid,$obj1->deduct);
}
return $result;

Stock 类存在于 stock-m.php 中,我可以确认方法 deductMainstock() 有效(包括 mysqli 更新查询)。

但是,当运行我的代码时,deductMainStock() 似乎不起作用。我知道有大量代码,因此为了保持简单,我需要了解以下内容:

  1. js文件中创建的var数组是否正确?我需要创建一个 json 对象以使用 ajax 按以下格式发送详细信息:

array=[{"pid"=1,"deduct"=a_value},{"pid"=2,"​​deduct"=another_value},{"pid"=3,"deduct"=another_value}]

  • js文件中的ajax调用是否正确?我使用 JSON.stringify() 将上面的数组转换为 json,以便通过 ajax 发送。

  • 我是否在 stock-c.php 中正确循环了数组?我需要将“pid”和“deduct”作为数字变量发送到 deductMainstock() 方法。

  • 最佳答案

    1. 请将变量名称 var new 更改为保留关键字后的其他名称。
    2. var updateArray = JSON.stringify(array); 您无需对数组进行字符串化。
    3. 将 ajax 调用移出 for 循环。

    下面是更新后的代码

    脚本

    <script>
    $("#proceed").on("click",function(){
    var num=$("#max").val();
    var array=[]; //[] or {} ??
    for(i=1;i<=num;i++){
    var old=$('input[data-id="'+i+'"]').data("old");
    var new_val=$('input[data-id="'+i+'"]').val();
    var deduct;
    if(new_val!==old && new_val!==""){
    deduct=old-new_val;
    array.push({"pid":i,"deduct":deduct});
    }

    }
    if(array.length){
    $.ajax({
    type:"POST",
    url:"../control/stock-c.php",
    data:{updateArray:array, func:"manualSync"},
    dataType:"json",
    success:function(){
    alert("yay");
    }
    });
    }

    });
    </script>

    PHP

    发布值将是数组,因此请从代码中删除 json_decode

    <?php 
    require_once '../model/stock-m.php';
    $array = $_POST["updateArray"];
    $obj = new Stock();
    foreach ($array as $obj1) {
    $result = $obj->deductMainstock($obj1->pid,$obj1->deduct);
    }
    return $result;

    ?>

    希望这会有所帮助。

    关于javascript - 创建和循环 json 对象时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39613412/

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