我不知道如何或不应该在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 .''; } ?>
”。到底发生了什么事?
答案 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);
}