我读过许多与我的困境有关的文章,但我不明白我的问题是什么,请有人帮我解释一下:
我想使用jQuery ajax将值发布到PHP文件:
<?php
session_start();
$returned = array("reply" => "no data received");
if(isset($_POST["data"])) {
$returned["reply"] = $_POST["data"];
}
print_r($_POST);
echo json_encode($returned);
?>
要发送的标志变量是整数。
这是我更新的updateScore.php(我发布的PHP文件):
initWithConcurrencyType:NSPrivateQueueConcurrencyType
“没有收到数据”被返回,所以至少我知道它已达到updateScore.php,但现在我需要帮助确定为什么它不发送任何东西 - 我100%确定标志有值。
其他信息:
答案 0 :(得分:1)
首先告诉服务器你发送的是JSON:
contentType: "application/json",
然后将对象传递给data
。这被编码为application/x-www-form-urlencoded
(不是JSON ,虽然它恰好嵌入了 in )。
data:{ data : JSON.stringify(flag) },
然后在PHP中尝试阅读$_POST
if(isset($_POST["data"])) {
...但是$_POST
是空的,因为你告诉服务器你发送了JSON所以没有尝试解码它。
删除此行:
contentType: "application/json",
...因为这是一个破坏你的代码的谎言。
替代地
你实际上可以发送JSON:
contentType: "application/json",
data: JSON.stringify(flag),
...然后从原始请求正文中读取它,而不是(仍未填充的)$_POST
。
$json = file_get_contents('php://input');
$data = json_decode($json);
答案 1 :(得分:0)
从您的示例中,您希望返回一个json对象但是您正在回显it works ....
。
在php中尝试此示例代码:
$returned = array("reply" => "not found");
if(isset($_POST["data"])) {
$returned["reply"] = "It works!" . $_POST["data"];
}
echo json_encode($returned);
基本上,此示例代码将returned
数组设置为reply
,默认为not found
。如果数据可用,则会为您的邮件设置reply
。之后,它echoes
消息的json版本。