" Mini")); while(-6ren">
gpt4 book ai didi

php - JSONException 索引超出范围 [0..1)

转载 作者:行者123 更新时间:2023-11-29 22:21:10 25 4
gpt4 key购买 nike

我正在尝试通过 JSONArray 中的 Volley 从 MySql 数据库获取信息。从表中提取行的 PHP 脚本如下:

<?php
ob_start();
header('Content-Type: application/json');
$con=mysqli_connect("localhost","root","","planet_db");
if (mysqli_connect_errno($con))
{
//echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$search = $_POST['search'];
//sql query
$query = "SELECT FirstName, LastName, Username FROM users WHERE Username='$search' OR FirstName='$search'";
$result = mysqli_query($con,$query);
$jsonArr = array(array("FirstName"=>"Einie", "LastName"=>" Mini"));
while($row = mysqli_fetch_assoc($result))
{
array_push($jsonArr,$row);
}
ob_end_clean();
echo json_encode($jsonArr);
mysqli_close($con);?>

通过HTML页面查询本地数据库的结果如下: user query query result

JSONArray 的第二个元素(索引 1)如上所示,但是当我尝试获取 Android 应用程序客户端接收到的 JSONArray 中索引 1 处的元素时,它会抛出 JSONException:index out ofbound [0. .1).同样,当我在 PHP 脚本中编辑以下行时:$jsonArr = array(array("FirstName"=>"Einie", "LastName"=>"Mini"));$jsonArr=array(); 并尝试获取 JSONArray 中索引 0 处的元素,我收到 JSONException:index out ofbound [0..0)。最后,我无法接收通过代码添加的 JSONArray 中的任何元素:

while($row = mysqli_fetch_assoc($result))
{
array_push($jsonArr,$row);
}

在我的 Android 应用程序中,它会抛出 JSONException: Index out ofbound 但我在本地主机上运行它时成功获得了正确的 JSON 数组。这是我的 Android 应用程序的代码:

private  void performSearch()
{
final String url = "http://192.168.42.16/planet/searchPeople.php";
JsonArrayRequest request = new JsonArrayRequest(Request.Method.POST, url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response)
{
//searchResults.setAdapter(new ResultListAdapter(response, Contents.this));
try {
Toast.makeText(Contents.this, response.getJSONObject(1).getString("FirstName") + " "
+ response.getJSONObject(1).getString("LastName"), Toast.LENGTH_LONG).show();
} catch (JSONException e)
{
e.printStackTrace();
Toast.makeText(Contents.this,
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(Contents.this, error.toString(),Toast.LENGTH_LONG).show();
}
})
{
@Override
protected Map<String, String> getParams()
{
Map<String, String> map = new HashMap<String, String>();
map.put("search", query);
return map;
}
};
MySingleton.getInstance(Contents.this).addToRq(request); // adding request to Volley Request Queue
}

如何摆脱这种 Index Out Ofbound JSONException?任何帮助将不胜感激!

最佳答案

1) 您的 URL 是本地 URL,根据您的网络设置,您的手机可能无法访问该 URL。确保您可以通过手机访问该网址。

2) 首先尝试在 onResponse 方法中打印整个 response,看看是否获得了所需的 JSON。

关于php - JSONException 索引超出范围 [0..1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30697450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com