2013-08-06 7 views
15

は、私はこのような私のサーバーへのポスト要求:AFNetworkingエラー:操作を完了できませんでした。 (ココアエラー3840)

-(Produkt*)fetchProductByID:(int)idNumber 
{ 

NSString* command = @"fetchProduct"; 
NSString* number = [NSString stringWithFormat:@"%d",idNumber]; 
NSMutableDictionary* params =[NSMutableDictionary dictionaryWithObjectsAndKeys: 
           command, @"command", 
           number, @"id", 
           nil]; 

[self commandWithParams:params onCompletion:^(NSDictionary *json) 
{ 
    //result returned 
    NSDictionary* res = [[json objectForKey:@"result"] objectAtIndex:0]; 
    NSMutableArray* dics = [[NSMutableArray alloc]init]; 

    if ([json objectForKey:@"error"]==NULL && [res count]>0) 
    { 
     //success 
     for(int i=0;i<[[json objectForKey:@"result"]count];i++) 
     { 
      res = [[json objectForKey:@"result"] objectAtIndex:i]; 
      [dics addObject:res]; 

      NSLog(@"SPECIAL FETCHED PRODUKT:%@",res); 
     } 
    } 
    else 
    { 
     //error 
     NSLog(@"error:%@",[json objectForKey:@"error"]); 
     res = [[json objectForKey:@"result"] objectAtIndex:0]; 
     NSLog(@"SPECIAL FETCHED PRODUKT:%@",res); 
    } 

}]; 

return NULL; 

} 

を送っしかし、私はいつもこのエラーが出る:エラー:操作を完了できませんでした。ここで私は、コマンドを実行:

function errorJson($msg) 
{ 
    header('Content-type: application/json'); 
    print json_encode(array("error"=>$msg)); 
    exit(); 
} 

function fetchAllProduct() 
{ 
    //fetch all Products 
    $result = query("SELECT * FROM Produkte"); 
    print json_encode($result); 
} 

function fetchProduct($id) 
{ 
     //fetch specific product 
     $result = query("SELECT * FROM Produkte WHERE id = '122'"); 
     print jeson_encode($result); 
} 
    function insertProduct($name, $artikelNr, $anleitung, $image, 
       $editDate, $id) 
{ 

    } 

    function updateProduct($name, $artikelNr, $anleitung, $image, 
       $editDate, $id) 
    { 
    //update old product 
    } 
?> 

そしてここでは、クエリ機能:

ためのコードである

<? 
require("lib.php"); 
require("QMServerAPI.php"); 

header("Content-Type: application/json"); 

switch ($_POST['command']) 
{ 
    case "fetchAllProduct": //Different question 
    fetchAllProduct(); 
    break; 

    case "fetchProduct": 
    fetchProduct($_POST['id']); 
    break; 

    case "insertProduct": 
    insertProduct($_POST['name'], $_POST['artikelNr'], 
    $_POST['anleitung'], $_POST['image'], $_POST['editDate'], 
    $_POST['id']); 
    break; 

    case "updateProduct": 
    updateProduc($_POST['name'], $_POST['artikelNr'], 
    $_POST['anleitung'], $_POST['image'], $_POST['editDate'], 
    $_POST['id']); 
    break; 
} 
?> 

:(ココアエラー3840) は、index.phpのコードは次のようになります

<? 

    //setup db connection 
    $link = mysqli_connect("localhost","root",""); 
    mysqli_select_db($link, "QM"); 

    //executes a given sql query with the params and returns an array as result 
    function query() { 
    global $link; 
    $debug = false; 

    //get the sql query 
    $args = func_get_args(); 
    $sql = array_shift($args); 

    //secure the input 
    for ($i=0;$i<count($args);$i++) { 
     $args[$i] = urldecode($args[$i]); 
    $args[$i] = mysqli_real_escape_string($link, $args[$i]); 
    } 

    //build the final query 
    $sql = vsprintf($sql, $args); 

    if ($debug) print $sql; 

    //execute and fetch the results 
     $result = mysqli_query($link, $sql); 
    if (mysqli_errno($link)==0 && $result) { 

    $rows = array(); 

    if ($result!==true) 
    while ($d = mysqli_fetch_assoc($result)) { 
    array_push($rows,$d); 
    } 

    //return json 
    return array('result'=>$rows); 

} else { 

    //error 
    return array('error'=> $mysqli->error); 
} 
} 

何が間違っているのかわかりません。すべての製品を選択しただけでうまく動作するからです。エラーはちょうど私がWHEREを使うときに来ます。

ありがとうございました。

答えて

19

ココアエラー3840はJSON解析エラーです(スタックオーバーフローを検索すると、this existing question aboutが表示されます)。

JSONバリデータを使用してWebサービスから出力JSONを実行して、実際に仕様に準拠していることを確認することをお勧めします。

+1

ねえ、同じエラーを参照していくつかの投稿があります。しかし、誰も私のエラーを解決することはできません。私は配列をチェックすると、私はちょうどこのエラーが戻って、他のオブジェクトを取得... JSONの出力をチェックするサーバーからの応答を(Mac上でxamppを実行する、それはローカル)をキャッチする方法はありますか?そして、私がSELECT * FROM Produkte –

+0

を使ってもうまく動作すると言ったので、私は変更したものを知りません。サーバを再起動して、突然すべてがうまくいくはずです。 –