json_encode返回的数据怎么接收

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json_encode返回的数据怎么接收相关的知识,希望对你有一定的参考价值。

参考技术A 1、首先前台AJAX请求,后台以对象转json返回。
2、其次后台返回的List里面装对象然后转json,后台代码。
3、最后前台解析代码,接收数据。

从 PHP 脚本接收“json_encode”时 Swift JSON 出错。没有它也能正常工作

【中文标题】从 PHP 脚本接收“json_encode”时 Swift JSON 出错。没有它也能正常工作【英文标题】:Error in Swift JSON when receiving 'json_encode' from PHP script. Works fine without it 【发布时间】:2016-10-20 08:41:39 【问题描述】:

我有一个按钮的 Swift 函数,当按下该按钮时,它会通过 PHP 将一些详细信息写入数据库:

 @IBAction func createCommunityButtonTapped(_ sender: AnyObject) 

    let communityName = communityNameTextField.text;
    if (communityName!.isEmpty)
        displayMyAlertMessage(userMessage: "You must name your Community");

        return;
    else

        func generateRandomStringWithLength(length: Int) -> String 

            var randomString = ""
            let letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

            for _ in 1...length 
                let randomIndex  = Int(arc4random_uniform(UInt32(letters.characters.count)))
                let a = letters.index(letters.startIndex, offsetBy: randomIndex)
                randomString +=  String(letters[a])
            

            return randomString
        

        let communityCode = generateRandomStringWithLength(length: 6)
        passwordTextField.text = communityCode

        let myUrl = URL(string: "http://www.quasisquest.uk/KeepScore/createCommunity.php?");

        var request = URLRequest(url:myUrl!);
        request.httpMethod = "POST";

        let postString = "communityname=\(communityName!)&code=\(communityCode)&email=\(myEmail!)";

        request.httpBody = postString.data(using: String.Encoding.utf8);

        let task = URLSession.shared.dataTask(with: request)  (data, response, error) in
        if (try! JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String:AnyObject]) != nil 
            
         

        task.resume()

    


除了我将这个echo jsonline 添加到 PHP 脚本中之外,该函数工作得很好:

if($newresult)

    $returnValue["status"] = "Success";
    $returnValue["message"] = "Community is registered";
    echo json_encode($returnValue);
    return;

然后我在这一行收到错误Thread 8: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subside = 0x0)

if (try! JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String:AnyObject]) != nil

并且在调试区有以下细节

data Data? some response URLResponse? 0x0000618000223500 error Error? nil none

我想我遗漏了一行,或者需要为 JSONSerialization 设置一个变量而不是“尝试!”但我不确定是什么。

【问题讨论】:

【参考方案1】:

您正在返回null。试试这个

if($newresult)

 $returnValue["status"] = "Success";
 $returnValue["message"] = "Community is registered";
 return json_encode($returnValue);

【讨论】:

以上是关于json_encode返回的数据怎么接收的主要内容,如果未能解决你的问题,请参考以下文章

PHP Json_encode() 空数组时,返回 [] 与 {} 的问题

php 怎么接收前端传来的json数据

php json_encode 返回false

对数组内容使用了json_encode返回汉字内容返回了空值

当php中的数组为空时,json_encode函数不返回大括号

PHP json_encode转换空数组为对象