如何在PHP中读取和使用Ajax数组

时间:2019-04-15 17:14:19

标签: php jquery ajax

我不知道如何或不应该在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 '<span>'. $d .'<span>';。然后,这使文件返回“ '. $d .''; } ?>”。到底发生了什么事?

2 个答案:

答案 0 :(得分:0)

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

根据您的情况,尝试使用$_POST['$inputBoxesValues']获取数组,并进行foreach迭代每个值。

答案 1 :(得分:0)

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

我拥有的完整PHP文件

for file in *.txt; do
    # extract parts of the filename to be differently formatted with a regex match
    [[ $file =~ (.*)\[(.*)\] ]] || { echo "invalid file $file"; exit; }

    # format extracted strings and generate the new filename
    formatted_date=$(date -d "${BASH_REMATCH[2]}" +"%Y_%m_%d")
    name="${BASH_REMATCH[1]// /_}"  # replace spaces in the name with underscores
    f="${formatted_date}_${name,,}" # convert name to lower-case and append it to date string
    new_filename="${f::-1}.txt"     # remove trailing underscore and add `.txt` extension

    # do what you need here
    echo $new_filename
    # mv $file $new_filename
done 

问题在于顶部该死的注释掉内容(<?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; } ?> )。它没有空间,也不在新行上,我不知道这是必需的。要解决此问题,我在新行上放置了注释字符

/*

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

<?php
/*
....

PHP:

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);
}