【问题标题】:How to read and use ajax array in PHP如何在 PHP 中读取和使用 ajax 数组
【发布时间】:2019-04-15 17:14:18
【问题描述】:

我不知道如何或在我的 PHP 文件中放入什么来检索 AJAX 请求发送的数组数据。我的 PHP 文件中需要什么才能将数组项一一隔离? (数组中的项目数量将是动态的)

我正在检查复选框值,并将这些值放入一个数组中。我将使用这个数组将它们放入一个字符串中。我在我的 PHP 文件中尝试了以下操作,但没有得到任何结果...要么导致错误,要么页面回显/响应没有任何内容。

foreach ($_POST['$inputBoxesValues'] as $value) {
  echo $value;
}
$amount = count($_POST);
for ($x = 0; $x <= $amount; $x++) {
  echo $_POST[$x];
}
echo implode(",", $_POST);

我现在已经尝试过了.. php 文件没有响应
新的 AJAX 功能

function formProcess() {
  var inputBoxesValues = $('input[type="checkbox"]:checked').map( function() {
    return $(this).val();
  }).get();
  var jsonString = JSON.stringify(inputBoxesValues);
  $.ajax({
    url: 'itemprocessor.php',
    data: {data : jsonString},
    dataType: 'json',
    method: 'POST',
    success: function(result) {
      window.location.href = "compare.php?" + result;
    }
  });
  console.log(jsonString);
}

PHP 文件...

$data = json_decode(stripslashes($_POST['data']));
foreach($data as $d){
  echo $d;
}

我知道在 PHP 中使用、创建和编辑字符串,但我只是不知道如何使用发送到文件的数组数据。

当按下“继续”按钮时调用该函数(以下为原代码)

function formProcess() {
  var $inputBoxesValues = $('input[type="checkbox"]:checked').map( function() {
    return $(this).val();
  }).get(); //makes array
  $.ajax({
    url: 'itemprocessor.php',
    data: $inputBoxesValues,
    dataType: 'json',
    method: 'POST',
    success: function(result) {
      window.location.href = "compare.php?" + result;
    }
  });
  console.log($inputBoxesValues);
}

预期结果/结果方法
- 用户选择框(有值)并单击继续,
- AJAX 发送包含所选复选框值数组的数据,
- PHP 文件返回一个字符串,类似于item1,item2,item3
- AJAX 脚本然后将用户发送到带有响应字符串的“compare.php”页面
- “比较”页面使用 url 中的 GET 数据

目前只到第二步,如何实现读取 AJAX 数据?

更新: 我现在尝试了其他的东西,(上面列出),但我注意到的一件事是,在我的 php 代码中,即使我尝试执行echo "Foo Bar";,PHP 代码仍然没有返回任何内容。但是当我只是在文件中不输入任何 PHP 代码而只输入“Foo Bar”时,以普通文本,没有 html 格式或任何东西。该文件以“Foo Bar”响应
注意到这一点,我现在也尝试输入echo '&lt;span&gt;'. $d .'&lt;span&gt;';。这将使文件返回“'. $d .''; } ?&gt;”。到底是怎么回事?

【问题讨论】:

  • 为什么不尝试一些您已经找到的答案?如果它们都不适合您,请使用更多信息更新此问题。

标签: php jquery ajax


【解决方案1】:

由于您使用的是POST,因此您可以在发送ajax 的php 页面中使用$_POST。您可以使用$_POST['variable_name'] 获取每个数据。

在您的情况下,尝试使用 $_POST['$inputBoxesValues'] 获取数组并执行 foreach 以遍历每个值。

【讨论】:

  • 对不起老兄,但我只是不明白 foreach,我似乎无法让它与我的阵列一起工作?我认为我所做的是正确的? ` foreach ($_POST['$inputBoxesValues'] as $value) { echo $value; } ` 我明白了... ` 注意:未定义的索引:F:\xampp\htdocs2\services\itemprocessor.php 中的 $inputBoxesValues 在第 10 行警告:为 F:\xampp\htdocs2\services\ 中的 foreach() 提供的参数无效第 10 行的 itemprocessor.php `
  • 如果您尝试了某些操作并且遇到了一些错误,请将其添加到您的问题中。这样会有更多的人能够为您提供帮助。
【解决方案2】:

好吧..基本上我是个白痴,但我现在知道下次了!
我已经注释掉了之前的尝试,以及我使用的不同方法,所以我没有每次都“重新开始”。

我拥有的完整 PHP 文件

<?php/*
    $amount = count($_POST);
    //echo $amount;
    for ($x = 0; $x <= $amount; $x++) {
      //  echo $_POST[$x];
    }
   // echo implode(",", $_POST);
    echo array($_POST);

    $nickname[] = $_POST;
    echo $_POST['webdesign'];*/

    $data = json_decode(stripslashes($_POST['data']));
    foreach($data as $d){
        echo $d;
    }
?>

问题在于顶部的该死的注释掉的东西 (/*)。它没有空格,也没有换行,我不知道这是一个要求。为了修复它,我将注释字符换行

<?php
/*
....

我的最终工作代码
jQuery/AJAX:

function formProcess() {
    var inputBoxesValues = $('input[type="checkbox"]:checked').map( function() {
        return $(this).val();
    }).get();
    $.ajax({
        url: 'itemprocessor.php',
        data: {data : inputBoxesValues},
        dataType: 'text',
        method: 'POST',
        success: function(result) {
            window.location.href = "compare.php?options=" + result;
        }
    });
    console.log(inputBoxesValues);
}

PHP:

<?php
    echo implode(",", $_POST['data']);
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多