jQuery Ajax错误200解析错误

时间:2016-05-16 18:11:19

标签: php jquery json ajax post

我读过许多与我的困境有关的文章,但我不明白我的问题是什么,请有人帮我解释一下:

我想使用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%确定标志有值。

其他信息:

  1. mime.types已激活所有JSON选项。
  2. console.log(data)返回未捕获的参考错误:未定义数据。
  3. errorThrown返回Parse错误:意外&lt;在位置0 - 我可以在位置0中说出意外的A,但它仍然是一个正在发送的空数组。
  4. print_r($ _ POST)返回Array()

2 个答案:

答案 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版本。