wysłać żądanie POST do serwera tak .:AFNetworking error: Operacja nie mogła zostać zakończona. (Błąd Cocoa 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;
}
Ale zawsze uzyskać ten błąd: błąd: Operacja nie może być zakończona. (Błąd Cocoa 3840.) Kod index.php wygląda następująco:
<?
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;
}
?>
Tu wykonać polecenie .:
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
}
?>
A oto kod dla funkcji zapytań .:
<?
//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);
}
}
Nie wiem, co jest nie tak, ponieważ po wybraniu wszystkich produktów wszystko działa poprawnie. Błąd pojawia się, gdy używam GDZIE.
Dzięki za pomoc.
Hej, masz rację, jest kilka postów odnoszących się do tego samego błędu. Ale żaden nie rozwiązuje mojego błędu. Kiedy sprawdzam tablicę, otrzymuję ten błąd z powrotem, żadnych innych obiektów ... Czy istnieje sposób na złapanie odpowiedzi z serwera (z uruchomieniem xampp na mac, więc jest to lokalne), aby sprawdzić wyjście JSON? I jak już powiedziałem, działa dobrze, gdy użyję SELECT * FROM Produkte –
Me znowu, nie wiem co zmieniłem .. Po prostu zrestartowałem serwer i nagle wszystko działa tak, jak powinno .... zasmakuj, żeby nie tracić czasu :( –