【问题标题】:I fail to send POST variables with JSON我无法使用 JSON 发送 POST 变量
【发布时间】:2016-01-30 18:13:34
【问题描述】:

我正在开发一个 Android 应用程序。我正在使用 JSON 与服务器通信。我有一个奇怪的问题。

我有一个问题列表。将android问题数据库与服务器同步;我使用 JSON post 方法一一发送所有问题。发送第一个问题后,我等待 JSON 中的“success=1”标签,然后发送以下问题。这是我的 PHP 文件:

<?php

require("config.inc.php");

if (!empty($_POST)) {

    $query = "
        INSERT INTO questions (question, username, askedDate, questionIDFromAndroid )
        VALUES ( :question, :username, :askedDate, :questionIDFromAndroid)";

    date_default_timezone_set('Europe/Istanbul');
    $date = date('Y-m-d H:i:s', time());



    $query_params = array(
        ':question' => $_POST['question'],
        ':username' => $_POST['username'],
        ':questionIDFromAndroid' => $_POST['questionID'],
        ':askedDate' => $date 
    );


    try {

        $stmt   = $db->prepare($query);
        $result = $stmt->execute($query_params);
    }
    catch (PDOException $ex) {

        $response["success"] = 0;
        $response["message"] = $ex->getMessage() ;
        die(json_encode($response));
    }

    $response["success"] = 1;
    $response["questionID"] = $_POST['questionID'];
    $response["question"] = $_POST['question'];
    $response["message"] = "Question Successfully Added!";
    echo json_encode($response);

    unset($_POST);
}
?>

查看 $query_params 变量。在那里,我读取了 $_POST 变量并将它们传递给 MySQL。在这里我可以正确设置所有值。问题是;当我尝试将 $_POST 变量传递到 JSON 时,服务器仅将第一个问题的值发送到 android 应用程序。

我的意思是,假设我向服务器发送了 5 个问题。

MySQL 结果(一切都是真的):

  1. 问题:问题ID:1;问题:“问题 1”
  2. 问题:问题ID:2;问题:“问题 2”
  3. 问题:问题ID:3;问题:“问题 3”
  4. 问题:问题ID:4;问题:“问题 4”
  5. 问题:问题ID:5;问题:“问题 5”

JSON 结果(我只得到第一个 POST 的值):

  1. 问题:问题ID:1;问题:“问题 1”
  2. 问题:问题ID:1;问题:“问题 1”
  3. 问题:问题ID:1;问题:“问题 1”
  4. 问题:问题ID:1;问题:“问题 1”
  5. 问题:问题ID:1;问题:“问题 1”

所以,我不明白为什么我可以正确地将 POST 值传递给 mySQL,但我不能将它们作为 JSON 回显。

我没有发送 android 代码,因为我确信 android 应用程序正确发送值,因为我可以在 mySQL 中看到预期值。

我尝试了什么:

-在我使用POST变量之前,我将它们传递给一个局部变量,我尝试使用这个局部变量插入mySQL和echo JSON(结果相同)

【问题讨论】:

  • 也许是它的缓存?
  • 您在哪里实际看到 JSON 结果?在您的应用程序中?您应该显示该代码。
  • 是的,你需要更清楚。通过逐个发送问题,您的意思是您为每个问题发送一个对这个 PHP 脚本的请求?您的“MySQL 结果”是什么意思?它们是 PHP 生成的查询字符串,还是每个查询实际上都返回了成功的查询结果..
  • PHP 代码看起来不错,发布您的接收从 PHP 脚本返回的 JSON 的 android 代码。

标签: php android mysql json post


【解决方案1】:

我发现了问题。正如我所说,我一一发送问题,我对每个问题使用迭代并发送它们。我的“JSONParser”对象不在迭代中。它在迭代类的开头,但不在迭代方法中。因此,对于每次迭代,我的应用程序都会读取 JSONParser 对象的第一个实例。在我将这段代码JSONParser jsonParser = new JSONParser(); 移动到我的迭代方法中后,我的问题就解决了。

【讨论】:

    猜你喜欢
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    相关资源
    最近更新 更多