はじめまして。
現在、データベースから読み出したデータをJSONでアプリ側に渡す、ということをしようとしているのですがうまくいかず、お力を貸していただけるとありがたいです。
通信にはAFNetworkingを利用しています。
//sample.php
<?php $sql = sprintf('SELECT id FROM my_table'); $record = mysqli_query($db, $sql) or die(mysqli_error($db)); $recordSet = mysqli_fetch_assoc($record); header('Content-Type: application/json; charset=utf-8'); echo json_encode($recordSet, JSON_UNESCAPED_UNICODE); ?>//アプリ
- (void)viewDidLoad {
[super viewDidLoad];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:@"http://sample.php" parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject){
NSLog(@"id:%@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"Error:%@", error);
}];
}
たとえば以上のようにすれば値は取得できるのですが、これだと配列の最後の値しか受け取れないので、すべての値を受け取ってアプリ側では配列として扱いたいです。
なのでphpの方で以下のようにループを回して、
//sample.php
<?php $sql = sprintf('SELECT id FROM my_table'); $record = mysqli_query($db, $sql) or die(mysqli_error($db)); header('Content-Type: application/json; charset=utf-8'); while ($recordSet = mysqli_fetch_aasoc($record)): echo json_encode($recordSet, JSON_UNESCAPED_UNICODE); endwhile; ?>アプリ側で受け取った値を配列にinsertObjectしていけばいいのかと思ったのですが、、、以下のようなエラーが出てしまいました。
JSON text did not start with array or object and option to allow fragments not set
これ以上自力で進めなくなってしまったのですが、どなたかご教授いただけないでしょうか。
初心者なりに考えた結果で的外れなやり方をしようとしているかもしれませんが、そのような場合にも「全然ちがう、普通はこうやる」といったことでも教えていただけると幸いです。
どうかよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/10/08 10:37
2014/10/08 13:55
2014/10/13 05:03