2012-03-12 8 views
0

私のmysqlデータベースからいくつかの値を取得するためにiphone用のASIFormDataRequestを使用しようとしています。 iphoneからASIFormDataRequestを使用した簡単なmysqlクエリ

私はこれを実行します。

NSURL *url = [NSURL URLWithString: ServerApiURLGet]; 
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL: url]; 
[request setDelegate:self]; 
[request setPostValue:@"james" forKey:@"name"]; 

要求がないPHPファイルに送信されたが、この:

$con = mysql_connect("host","user","password"); 
mysql_select_db("table", $con); 

$name = mysql_real_escape_string($_GET['name']); 
$query = mysql_query("SELECT score FROM `active_users` WHERE `nickname` ='$name';"); 

$result = mysql_fetch_array($query); 

sendResponse(200, json_encode($result)); 

と応答機能:

function sendResponse($status = 200, $body = '', $content_type = 'text/html') 
{ 
$status_header = 'HTTP/1.1 ' . $status . ' ' . getStatusCodeMessage($status); 
header($status_header); 
header('Content-type: ' . $content_type); 
echo $body; 
} 

iPhoneに戻って、このようなコールバックから情報を読み取ろうとします:

- (void)requestFinished:(ASIHTTPRequest *)request 
{   
NSDictionary *responseDict = [[request responseString] JSONValue]; 

NSLog(@"responseString: %@", [request responseString]); 
NSLog(@"responseHeaders: %@", [request responseHeaders]); 
NSLog(@"responseDict: %@", responseDict); 
} 

しかし、動作しません。私はエラーが表示されます:

2012-03-12 08:33:57.657 Test[1991:707] -JSONValue failed. Error is: Unexpected end of input 
2012-03-12 08:33:57.659 Test[1991:707] responseString: 

2012-03-12 08:33:57.660 Test[1991:707] responseHeaders: { 
Connection = close; 
"Content-Type" = "text/html"; 
Date = "Mon, 12 Mar 2012 07:33:58 GMT"; 
Server = "Apache/2.2.6 mod_auth_kerb/5.3 PHP/5.2.17 mod_fcgid/2.3.6"; 
"Transfer-Encoding" = Identity; 
"X-Powered-By" = "PHP/5.2.17"; 
} 
    2012-03-12 08:33:57.661 Test[1991:707] responseDict: (null) 

何か助けがあります。おかげ

編集:

同じ結果、私は単純な配列で渡す場合:解決

$newArray = array(
    "score1" => '1000', 
); 

sendResponse(200, json_encode($newArray)); 

:私は_POSTに_GETを変更

は、それが動作します。ありがとう

+0

[request responseString]を記録すると、サーバーからの応答はjson validではありません。ここにログを追加 –

+0

ログにコードを更新しました – BlackMouse

答えて

2

あなたはiPhoneにJSON値をエンコードせずに結果をiPhoneに送信しているだけなので、iPhone側のJSONValueは結果を理解できません。

sendResponse(200, json_encode($result)); 

結果を送信する前にエンコードすること。

+0

返信ありがとうございます。しかし、私はまだ同じエラーが発生します – BlackMouse

+0

@ user1251004その後、実際にあなたの質問に役立つiPhone側に表示されるログを追加する必要があります。たとえば、クエリで結果が得られない場合は、おそらく "false"をエンコードするだけです。 –

+0

私はログに編集しました。私はどんなresponseStringも取得しません。私はまた、DBからのクエリの代わりに単純な配列を渡そうとしました:\t $ newArray = array( \t \t "score1" => '1000'、);しかし、同じ結果を得る – BlackMouse

関連する問題