【问题标题】:Response method doesnt working properly in php script响应方法在 php 脚本中无法正常工作
【发布时间】:2016-04-16 11:25:46
【问题描述】:

我在 android studio 中创建了一个用于登录/注册的项目。 我使用 volley 库和一个将我的 java 代码与我的数据库连接起来的 php 脚本。POST 方法运行良好,我可以在我的数据库中插入信息。但我没有得到任何响应。似乎我的 php 脚本中有错误。 这是php脚本:

   $con = mysqli_connect("mysql10.000webhost.com", "a3288368_user", "abcd1234", "a3288368_data");

$name = $_POST["name"];
$age = $_POST["age"];
$username = $_POST["username"];
$password = $_POST["password"];
$statement = mysqli_prepare($con, "INSERT INTO user (name, age, username, password) VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($statement, "siss", $name, $age, $username, $password);
mysqli_stmt_execute($statement);

$response = array();
$response["success"] = true;  

echo json_encode($response);

有什么想法吗?

【问题讨论】:

  • 最好var_export($response)到服务器上的一个文件看看它的内容是什么(如果你能调试它,那么一定要使用带断点的调试器)

标签: php android response android-volley


【解决方案1】:

使用

print_r(json_encode($response));

你不能回显 json 字符串。

【讨论】:

  • 可以回显任何内容。 print_r() 只是渲染数组的问题(这是 PHP 的问题)。 Echo 将 [pack] 内容发送回客户端。
  • 确切地说,我的意思是说用户必须调用该数据包才能使用 echo 而不是整个 json 字符串来获取结果。如果我错了,请纠正我。他可以使用:echo $response['success'];
  • 当您json_encode() 时,您正在制作一个字符串。该字符串仅对 JSON 解析器有意义,否则,它只是一个字符串,因为“Hello World”是一个字符串 [of characters]。如果用户不想json_encode(),你说的是真的
【解决方案2】:

在回显响应之前,您应该设置一个 JSON 标头:

header("Content-type: application/json; charset=utf-8");

这告诉 HTTP 客户端期待 JSON 类型的内容。

【讨论】:

  • 我正在使用 volley 库。似乎不适用于 volley
猜你喜欢
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
  • 2015-04-04
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
相关资源
最近更新 更多