如何将每个PHP foreach值放入每个jQuery Ajax中

3
foreach($data['data'] as $data){
    $count = $data['number'];
}

// $data['number']; will return some number like:

159809
359107
249178
... //10+ numbers

那么,如何将每个php foreach的值放入每个jquery ajax中呢?(通过jquery ajax传递每个数字,会有10多个ajax调用,并在一个div中返回所有数据)。谢谢。

<script type="text/javascript">
jQuery(document).ready(function(){
    $.ajax({
        url: "process.php", 
        dataType: "html",
        type: 'POST', 
        data: "items=<?php echo $count; ?>", //each $count value in each ajax
        success: function(data){
            $("#result").html(data);
        }
    });
});
</script>
<div id="result"></div>

有一种解决方案可以实现你想要的,但你应该知道这绝对不是正确的做法。你应该至少在一个 AJAX 调用中传递所有的 10 个项目... - Fosco
@Fosco,如果我在一个ajax调用中处理所有项目,例如$count = $data['number'].'a';,然后在process.php中探索a以获取每个数字,但是process.php如何知道它将有多少个探索的数字? 它也会像$explored[0]$explored[1]...一样犯错误,最后一个是什么? - cj333
你可以像传递一个数组一样,然后在另一端智能地解析数组。你在某个地方有一个知识漏洞。 - Fosco
2个回答

2

将 PHP 数组中的 10 个值放入 JavaScript 数组中,使用 JavaScript 循环 10 次,并使用来自 JavaScript 数组的数据调用 ajax 函数。


如何创建一个 JavaScript 数组,抱歉我不太擅长这个。 - cj333

1
如果您真的想为每个 $count 值创建一个独特的 ajax 调用,并将数据返回到 #result div 中:
<script type="text/javascript">
    $(document).ready(function(){

<?php
foreach($data['data'] as $data){
    $count = $data['number'];
    ?>
      $.ajax({
        url: "process.php", 
        dataType: "html",
        type: 'POST', 
        data: "items=<?php echo $count; ?>",
        success: function(data){
            $("#result").append(data);
        }
      });
    <?php
}
?>

    });
</script>
<div id="result"></div>

然而,我强烈建议将值作为数组传递,并仅进行一次ajax调用:

$count = array();
foreach($data['data'] as $data){
    $count[] = $data['number'];
}
$datacount = implode('-',$count);
?>

<script type="text/javascript">
    $(document).ready(function(){
      $.ajax({
        url: "process.php", 
        dataType: "html",
        type: 'POST', 
        data: "items=<?php echo $datacount; ?>",
        success: function(data){
            $("#result").append(data);
        }
      });
    });
</script>
<div id="result"></div>

在 process.php 的服务器端,您可以使用 explode('-',$_POST['items']) 然后通过 foreach 循环遍历它们。
这只是实现它的另一种方式... 它也可以是 json_encoded 或其他许多方式。

谢谢。这可以返回我想要的数据,但CPU使用率有点高,从5%到22%不等。也许我的问题不是一个好主意。我只是想一次处理10个以上的事情,然后缩短页面加载时间。 - cj333

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接