Ошибка при попытке получить данные Json из php-скрипта

Я получаю следующую ошибку при попытке получить данные. В Интернете я прочитал, что это потому, что PHP-скрипт недействителен и не возвращает данные JSON. Но скрипт php работает нормально и выдает правильные данные.

Сообщение об ошибке :

Ошибка Domain = NSCocoaErrorDomain Code = 3840 «Текст JSON не начинался с массива или объекта, и параметр, позволяющий не устанавливать фрагменты.» UserInfo = {NSDebugDescription = Текст JSON не начинался с массива или объекта, и параметр, позволяющий не устанавливать фрагменты.}

Я попытался разрешить фрагменты, но потом я получил еще одно сообщение об ошибке.

Вот быстрый код, где я пытаюсь получить данные:

let myUrl = NSURL(string: "http://xxxxxxxxxxx.xxx/xxxxxxxx.php")

let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
let postString = "userEmail=\(userEmail!)&userPassword=\(userPassword!)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)

NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in

dispatch_async(dispatch_get_main_queue())
{
if(error != nil)
{
var alert = UIAlertController(title: "Achtung", message: error?.localizedDescription, preferredStyle: UIAlertControllerStyle.Alert)

let action = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil)

alert.addAction(action)

self.presentViewController(alert, animated: true, completion: nil)
}
print("1")
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary

if let parseJSON = json {

let userId = parseJSON["userId"] as? String
if( userId != nil)
{
print("SUCESS FUCKER")
let mainView = self.storyboard?.instantiateViewControllerWithIdentifier("main") as! FlickrPhotosViewController

let mainPageNavi = UINavigationController(rootViewController: mainView)
//open mainView
let appdele = UIApplication.sharedApplication().delegate
appdele?.window??.rootViewController = mainPageNavi} else {
let userMassage = parseJSON["message"] as? String
let myAlert = UIAlertController(title: "Alert", message: userMassage, preferredStyle: UIAlertControllerStyle.Alert);

let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil)
myAlert.addAction(okAction);
self.presentViewController(myAlert, animated: true, completion: nil)

}

}
} catch{
print(error)
print("FAILED CATCHED")
}

}
}).resume()

и это важная часть файла php:

$userSecuredPassword = $userDetails["user_password"];

$userSalt = $userDetails["salt"];

if($userSecuredPassword === sha1($userPassword . $userSalt))
{
$returnValue["status"]="200";

$returnValue["userFirstName"] = $userDetails["first_name"];

$returnValue["userLastName"] = $userDetails["last_name"];

$returnValue["userEmail"] = $userDetails["email"];

$returnValue["userId"] = $userDetails["user_id"];
} else {
$returnValue["status"]="403";

$returnValue["message"]="User not found";

echo "failed";

echo json_encode($returnValue);

return;
}echo json_encode($returnValue);

$ returnValue возвращает это, когда я его печатаю:
Array ([status] => 200 [userFirstName] => Paul [userLastName] => Heinemeyer [userEmail] => paul_heine [userId] => 63)

0

Решение

Когда вы правильно отформатируете свой PHP-код, вы увидите, что в другой части у вас есть

echo "failed";
echo json_encode($returnValue);

что приводит к

failed{...}

Как уже говорится в сообщении об ошибке, этот «текст JSON не начинался с массива или объекта …»

Может быть, есть аналогичный выход для другой части.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]