从 PHP 获取 JSON 数据到 iOS
Posted
技术标签:
【中文标题】从 PHP 获取 JSON 数据到 iOS【英文标题】:getting JSON data from PHP to iOS 【发布时间】:2012-07-21 17:04:52 【问题描述】:我正在开发一个 iPhone 应用程序来显示来自 php 的数据。数据从 mysql 数据库中获取,然后在 php 文件中编码为 JSON 格式:
include_once 'connectionIncl.php';
if(function_exists($_GET['method']))
$_GET['method']();
function getSQLIntoJSONFormat()
$arr;
$sql = mysql_query("SELECT * FROM pecivo");
while($pecivo = mysql_fetch_assoc($sql))
$arr[] = $pecivo['typ'];
$arr= json_encode($arr);
echo $_GET['jsoncallback'].'('.$arr.')';
// --- http://127.0.0.1:8887/TeplyRohlik/pecivo.php?method=getSQLIntoJSONFormat&jsoncallback=?
当我从浏览器运行它时,它会返回正确的数据:
(["sejra","knir","baba","vousy","sporitelna25"])
另外,在 ios 上有这个代码:
NSString * urlString = [NSString stringWithFormat:@"http://192.168.0.10:8887/TeplyRohlik/pecivo.php?method=getSQLIntoJSONFormat&jsoncallback=?"];
NSURL * url = [NSURL URLWithString:urlString];
NSData * data = [NSData dataWithContentsOfURL:url];
NSError * error;
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSLog(@"%@",json);
结果是.... (null
)。
我不知道如何让这个工作......
【问题讨论】:
您是否尝试过可以从您的设备访问该 URL?转到您的手机浏览器并输入上面的网址,看看它是否正确回答 欢迎来到 Stack Overflow!请不要将mysql_*
函数用于新代码。它们不再维护,社区已经开始deprecation process。看到red box?相反,您应该了解prepared statements 并使用PDO 或MySQLi。如果您不能决定,this article 将帮助您选择。如果你想学习,here is good PDO tutorial.
您为什么不查看 NSError 对象以了解更多信息? o,0
它可能有助于记录数据(http 响应)和来自 json 解析器的错误
我注意到的另一件事是您的容器不是字典。这是一个数组!!
【参考方案1】:
看起来您的 PHP 方法正在吐出JSONP。您可能想要做的是将其更改为:
function getSQLIntoJSONFormat()
$arr;
$sql = mysql_query("SELECT * FROM pecivo");
while($pecivo = mysql_fetch_assoc($sql))
$arr[] = $pecivo['typ'];
$arr= json_encode($arr);
echo $arr;
您看到输出被括在括号中,因为它期望在名为 jsoncallback
的请求中包含一个 GET 参数,这将使输出看起来像这样:
javascriptFunction(["a","b","b"])
这不是您想要的 iOS 设备。您只需要数组的原始 JSON 字符串,不包含在回调函数调用中。
【讨论】:
以上是关于从 PHP 获取 JSON 数据到 iOS的主要内容,如果未能解决你的问题,请参考以下文章
PHP:如何从 JSON 中获取变量(从 Swift iOS 应用程序发送)并以 JSON 响应
如何从php服务器获取json数据到android mobile
使用 JSON 和 PHP 从 Mysql DB 获取数据到 listView