从 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 响应

从 iOS 到 php 的 JSON 数据

如何从php服务器获取json数据到android mobile

使用 JSON 和 PHP 从 Mysql DB 获取数据到 listView

通过iOS应用程序将数据从json(php webservice)修改为mysql

数据表中的多选行,如何从JSON获取一列数据到php