我正在编写我的第一个Javascript / PHP Web应用程序。 在客户端,我使用以下代码:
<script>
$.ajax({
url: "Search.php",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: '{SubGroup:"'+SubGroup+'",FlowerColor:"'+FlowerColor+'"}',
cache: false,
success: function (data) {
console.log("Back from AJAX - Success.");
// $(document).ajaxSuccess implements the success logic
},
error: function (data) {
console.log("Back from AJAX - Error.");
}
});
Web Service Search.php完美运行,有一个主要问题。从ajax语句发送的数据(SubGroup和FlowerColor)没有被接收。我正在使用下面的代码。
<?php
if (isset($_POST["SubGroup"])) {
$SubGroup = $_POST['SubGroup'];
} else {
error_log("Invalid input Received (SubGroup)");
exit;
}
奇怪的是,我使用以下代码完美地接收了其余的标头信息:
// Getting headers sent by the client.
$headers = apache_request_headers();
foreach($headers as $key => $value)
{
error_log($key . ' = ' . $value);;
}
答案 0 :(得分:0)
如果您将数据作为字符串传递,则应使用URL编码,而不是JSON的字符串表示形式:SubGroup=...&FlowerColor=...
您还可以将数据作为对象传递:
data: {SubGroup: 'mygroup', FlowerColor: 'mycolor'}
processData(默认:true)
类型:布尔
默认情况下,数据传入 数据选项作为对象(从技术上讲,除 字符串)将被处理并转换为适合的查询字符串 设置为默认的内容类型“ application / x-www-form-urlencoded” 。如果 您要发送DOMDocument或其他未处理的数据,请设置此 选项为false。