这个问题现在困扰我一整天,我不知道如何解决它。 我想简单地使用JSON将数据传递到服务器端运行php脚本。 Firebug告诉我请求通过,甚至正确地显示"参数中的有效负载"部分,但我的PHP脚本不会收到任何数据。
我在$ _POST和$ _REQUEST上尝试了var_dump,两者都导致"数组(0){}" - 显示。试图读出整个原始数据流(file_get_contents(' php:// input'))生成的' string(0)"" '结果是。
我已经检查了我的php.ini文件,最多上传大小为128M,变量顺序为" GPCS",请求顺序设置为" GP"。 allow_url_fopen和allow_url_include也都设置为ON。
这是JSON的符号 - 我尝试通过的对象数组:
[{"而purchaseDate":" 2017年9月9日"" itemCategory":"自动"" ITEMPRICE& #34;:" 229.00"" ITEMNAME":"轮胎"},{"而purchaseDate":" 2017-09 -09"" itemCategory":" Lebensstil"" ITEMPRICE":" 30.45"" ITEMNAME&#34 ;:"食物"}]
它基本上是一个JavaScript - 包含JSON的对象 - 对象。
这是我的HTML表单代码:
<form name = "add_new_item" method = "post">
<?php $purchasedate = date("Y-m-d"); ?>
<input type = "hidden" id = "item_purchase_date" value = "<?php echo $purchasedate; ?>" />
<table>
<tr>
<td><?php echo date("d.m.Y");?></td>
</tr>
<tr>
<td>Art der Ausgabe</td>
</tr>
<tr>
<td><input type = "radio" name = "item_category" value = "Lebensmittel" checked = "checked"/>Lebensmittel</td>
<td><input type = "radio" name = "item_category" value = "Lebensstil"/>Lebensstil</td>
<td><input type = "radio" name = "item_category" value = "Auto"/>Auto</td>
<td><input type = "radio" name = "item_category" value = "Haushalt"/>Haushalt</td>
<td><input type = "radio" name = "item_category" value = "Musik"/>Musik</td>
<td><input type = "radio" name = "item_category" value = "Büro"/>Büro</td>
<td><input type = "radio" name = "item_category" value = "Behoerde"/>Behörde</td>
</tr>
<tr>
<td>Rechnungsbetrag: </td>
<td><input id = "item_price"/></td>
</tr>
<tr>
<td>Artikelbezeichnung: </td>
<td><input id = "item_name" /></td>
</tr>
<tr>
<td><p id = "new_item">Weitere Posten</td>
<td><p id = "close_form">Posten speichern und Ende</td>
</tr>
</table>
</form>
&#13;
这是用于创建对象数组的JS / Jquery代码:
var myObjectArray = [];
$("#new_item").click (function () {
var ipd = $("#item_purchase_date").val();
var ict = $("input[name='item_category']:checked").val();
var ipr = $("#item_price").val();
var ina = $("#item_name").val();
var $basketItem = $("<div></div>").text(ipd + " | " + ict + " | " + ipr + " € | " + ina);
$("#basket").append($basketItem);
// Objekte erzeugen und in Array schieben
var newDataObject = { "purchaseDate" : ipd, "itemCategory" : ict, "itemPrice" : ipr, "itemName" : ina };
// console.log(newDataObject);
myObjectArray.push(newDataObject);
console.log(myObjectArray);
$("#add_new_item")[0].reset();
});
&#13;
这是JSON代码段;你可以看到我使用&#34; application / x-www-form-urlencoded&#34;作为内容类型:
$("#close_form").click (function () {
$("add_new_item").submit();
var exchangeArray = JSON.stringify(myObjectArray);
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (this.readystate == 4 && this.status == 200)
{
console.log(this.responseText);
}
}
xmlhttp.open("POST", "aserver.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("objects=" + exchangeArray );
});
&#13;
这将是服务器端PHP脚本:
<?php
session_start();
echo json_last_error();
echo "<br>";
var_dump ($_POST["objects"]);
echo "<br>";
print_r($_REQUEST);
echo "<br>";
print_r($_POST);
echo "<br>";
print_r($_FIL
ES);
echo "<br>";
var_dump($_REQUEST);
echo "<br>";
var_dump($_POST);
echo "<br>";
$data = file_get_contents('php://input');
echo "<br>";
var_dump($data);
?>
&#13;
请求标头数据:
主机
本地主机 用户代理
Mozilla / 5.0(X11; Ubuntu; Linu ......)Gecko / 20100101 Firefox / 55.0 接受
/ 接受语言 DE,的en-US; Q = 0.7,连接; Q = 0.3 接受编码 gzip,deflate 引荐 http://localhost/ausgaben/eintragneu.php 内容类型
应用程序/ x-WWW窗体-urlencoded 内容长度
197 饼干
WP-设置时间-1 = 1498579548; ... 17792b1639a49e238c33ca199902a 连接
保活
响应标头数据:
主机
本地主机 用户代理
Mozilla / 5.0(X11; Ubuntu; Linu ......)Gecko / 20100101 Firefox / 55.0 接受
/ 接受语言 DE,的en-US; Q = 0.7,连接; Q = 0.3 接受编码 gzip,deflate 引荐 http://localhost/ausgaben/eintragneu.php 内容类型
应用程序/ x-WWW窗体-urlencoded 内容长度
197 饼干
WP-设置时间-1 = 1498579548; ... 17792b1639a49e238c33ca199902a 连接
保活
...最后是PHP脚本显示的结果:
Blockquote 4注意:未定义索引:第10行/opt/lampp/htdocs/ausgaben/aserver.php中的对象NULL Array()Array()Array()array(0){} array(0){} string (0)&#34;&#34;
我还没有想到如何进一步尝试解决这个问题。任何帮助表示赞赏!谢谢你们和女孩们!
答案 0 :(得分:0)
将此代码留在此处以供OP测试和比较,将删除。
=IF(AND((N2-M2)<20,(N2-M2)>0),"ASAP",IF(M2>L2,"On Track",IF(M2>N2,"Behind","Semi-behind")))