1

タイトルの通り..

JSON 用の私の NSDictionary initWithObjectsAndKeys は、POST メソッドを使用して、PHP コードを介して MySQL クエリを実行します。

私のXcodeコード:

-(IBAction)setJsonFromData:(id)sender
{
    NSDictionary *jsonDict = [[NSDictionary alloc] initWithObjectsAndKeys: @"Welcome", @"title", @"Hello", @"article", @"123456789", @"timestamp", nil];

    if([NSJSONSerialization isValidJSONObject:jsonDict])
        {
           NSError *error = nil;
           NSData *result = [NSJSONSerialization dataWithJSONObject:jsonDict     options:NSJSONWritingPrettyPrinted error:&error];
           if (error == nil && result != nil) {
           [self postJSONtoURL:result];
        }
    }
}

-(id)postJSONtoURL:(NSData *)requestJSONdata
{
    NSURL *url = [NSURL URLWithString:@"http://test.com/json.php"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [request setValue:[NSString stringWithFormat:@"%d", [requestJSONdata length]] forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody: requestJSONdata];

    NSURLResponse *response = nil;
    NSError *error = nil;

    NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

    NSLog(@"RESULT: %@", requestJSONdata);

    if (error == nil)
        return result;
    return nil;
}

私のPHPコード:

if (isset($_REQUEST))
{
    $json = $_REQUEST;
    $data = json_decode($json);

    $title = $_REQUEST['title'];
    $article = $_REQUEST['article'];
    $timestamp = $_REQUEST['timestamp'];

    mysql_query("INSERT INTO news (title, article, timestamp) VALUES ('$title->title','$article->article','$timestamp->timestamp')");
}

mysql_close();  
4

2 に答える 2

1

POST リクエストを行うため、http 本文で json ペイロードを受信して​​います。
したがって、それをデコードする必要があります。

$http_body = file_get_contents('php://input');
$data = json_decode($http_body);

その後、次のようなデータにアクセスできるはずです。

$data->title

PHP は、受信した json データを自動的にデコードしません。

そのことに関するドキュメントを参照してくださいphp://input

于 2012-11-07T19:51:39.430 に答える
0

あなたの問題は、phpファイルにデータを取得できないことです。

投稿リクエストを行うときは、する必要があります

$whatevervar = $_POST['NAME-OF-POST-VARIABLE-FROM-CLIENT'] それが、データベースに空のものを投稿している理由です。データベースに投稿するときは、投稿変数をそこに直接入れないでください。最初に投稿をきれいにして削除してから、2番目の変数をデータベースに入れます。また、クエリで何が起こったのかを知るために、応答コールバックが必要です。

于 2012-11-07T19:59:26.540 に答える