【发布时间】:2015-10-11 15:38:59
【问题描述】:
此代码的目的是使用 PHP 脚本将数据发送到 SQL 数据库。 但是当我尝试运行它时,我收到以下错误:
错误域=NSCocoaErrorDomain 代码=3840“JSON 文本没有以数组或对象开头,并且允许未设置片段的选项。” UserInfo={NSDebugDescription=JSON 文本不以数组或对象开头,并且允许未设置片段的选项。}
这是我的代码:
// Send userdata to server side
let myURL = NSURL(string: "http://localhost/userRegister.php");
let request = NSMutableURLRequest(URL:myURL!);
request.HTTPMethod = "POST";
let postString = "email=\(userEmail)&password=\(userPassword)";
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);
// Create the task and execute it
let task = NSURLSession.sharedSession().dataTaskWithRequest(request){
data,response, error in
if error != nil{
print("error=\(error)")
return
}
var err: NSError?
do
{
let json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary
if let parseJSON = json {
var resultValue = parseJSON["status"] as? String
print("result: \(resultValue)")
var isUserRegisterd:Bool = false;
if(resultValue=="Success")
{
isUserRegisterd = true
}
var messageToDisplay: String = (parseJSON["message"] as? String)!
if(!isUserRegisterd)
{
messageToDisplay = (parseJSON["message"] as? String)!
}
dispatch_async(dispatch_get_main_queue(), {
var myAlert = UIAlertController(title: "Alert", message: messageToDisplay, preferredStyle: UIAlertControllerStyle.Alert);
let okAction = UIAlertAction(title: "Oké", style: UIAlertActionStyle.Default){
action in
self.dismissViewControllerAnimated(true, completion: nil);
}
myAlert.addAction(okAction);
self.presentViewController(myAlert, animated: true, completion: nil);
});
}
}
catch
{
print(error)
}
}
task.resume()
这里有什么问题?
【问题讨论】:
-
顺便说一句,
var err: NSError?行是不需要的。此外,messageToDisplay逻辑可能不太正确(例如,如果parseJSON不包含键为message的值,它将崩溃)。但是,在您担心这些事情之前,请先查看下面的data和response,并弄清楚为什么您没有收到预期的 JSON 响应。