2011-12-20 56 views
5

Tôi làm cách nào để truy cập dữ liệu json trong tập lệnh php mà nó nhận được qua http-post? Tôi đang làm như sau ở phía bên iOS:JSON-dữ liệu từ iOS vào PHP-script

NSData *data = [NSJSONSerialization dataWithJSONObject:object options:0 error:NULL]; 

NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://example.com/script.php"]]; 
[req setHTTPMethod:@"POST"]; 
[req setHTTPBody:data]; 

[NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&err]; 

Làm cách nào để truy cập dữ liệu này trong tập lệnh php? Nói cách khác, khi tôi gọi json_decode(...) trong tập lệnh php, ... là gì?

+0

Một cách tốt để gỡ lỗi loại công cụ này là cho 'var_dump ($ _ POST)' vào một tập tin đăng nhập và xem những gì bạn đang nhận được gửi đi. – jprofitt

+0

Tôi khuyên bạn nên tìm một khóa học PHP cơ bản trước hết để đảm bảo bạn hiểu những điều cơ bản (nhận dữ liệu POST là khá cơ bản) của PHP. –

+4

Xin lỗi, nhưng $ _POST không chứa bất kỳ dữ liệu nào, khi đăng trực tiếp dữ liệu json. Và việc truy cập 'php: // input' dường như không mang tính cơ bản đối với tôi. –

Trả lời

14

Nếu bạn đang gửi JSON của bạn trong phương pháp POST, Nó có thể được nhận trong PHP với mã dưới đây

<?php $handle = fopen('php://input','r'); 
       $jsonInput = fgets($handle); 
       // Decoding JSON into an Array 
       $decoded = json_decode($jsonInput,true); 
?> 
+1

Cảm ơn bạn! Hoàn hảo! –

+0

Hoạt động tốt Cảm ơn ... – Elby

+0

@nakkeeran, chúng tôi có thể luôn sử dụng php: // input ??? không bao giờ được sử dụng nó trước nhưng nó có vẻ làm việc trên thiết lập địa phương của tôi – alex

0

Trong kịch bản php bạn lấy dữ liệu POST và làm

json_decode($data); 

và điều đó sẽ cung cấp cho bạn một đối tượng, bạn có thể làm việc với.

+0

Dữ liệu $ là gì? Có phải là $ _POST không? –

+0

Tôi nghĩ vậy. Cung cấp cho nó một shot, và cho tôi biết – macintosh264

+0

Không, tôi không làm việc với $ _POST. Nhân tiện, tại sao câu hỏi này lại nhận được rất nhiều phiếu bầu? Có gì xấu về nó? –

1

Các bài yêu cầu khi gửi sử dụng iOS không làm việc với $ _POST. Nếu yêu cầu tương tự được đưa ra bằng cách sử dụng js thì json trong bài viết không hoạt động.

+0

Cách chính xác để làm điều đó sẽ được thiết lập tiêu đề để văn bản/html. Nếu bạn đặt tiêu đề cho ứng dụng/json, tập lệnh php chỉ làm hỏng nó. –

0
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
    [request setHTTPMethod:@"POST"]; 
    [request setHTTPBody: jsonData]; 
    [request setValue:@"text/html" forHTTPHeaderField:@"Content-Type"]; 
    [request setValue:[NSString stringWithFormat:@"%d", [jsonData length]] forHTTPHeaderField:@"Content-Length"]; 

Mã này có thể được sử dụng để gửi một phản ứng

Các vấn đề liên quan