我正在开发一个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 app发送第一个问题的值。
我的意思是,假设我向服务器发送了5个问题。
MySQL结果(一切都是真的):
JSON结果(我只得到第一个POST的值):
所以,我无法理解为什么我可以正确地将POST值传递给mySQL,但我不能将它们作为JSON回显。
我没有发送android代码,因为我确信android应用程序正确发送值,因为我可以在mySQL中看到预期的值。
我尝试了什么:
- 在我使用POST变量之前,我将它们传递给局部变量,我试图使用这个局部变量来插入mySQL和echo JSON(结果是一样的)
答案 0 :(得分:0)
我发现了这个问题。正如我所说,我逐个发送问题,我使用迭代为每个问题,我发送它们。我的&#34; JSONParser&#34;对象不在迭代中。它是在迭代类的开头,但不在迭代方法中。因此,对于每次迭代,我的应用程序都会读取JSONParser对象的第一个实例。在我的迭代方法中移动了这段代码gulp.task('package', function() {
var packagePath = paths.packagePath;
var stream = gulp
.src( paths.api )
.pipe( gulp.dest( packagePath + '/api' ) );
del( packagePath + '/api/v1/_old' );
return stream;
});
之后,我的问题就解决了。