如何在不关闭和重新加载应用程序的情况下获得新的 JSON 响应
Posted
技术标签:
【中文标题】如何在不关闭和重新加载应用程序的情况下获得新的 JSON 响应【英文标题】:how to get a new JSON response without closing and reloading the app 【发布时间】:2016-02-07 20:23:55 【问题描述】:我刚开始构建一个使用 REST api 的应用程序,我正在控制台中测试 JSON 响应。
我有 2 个用户输入的 UITextFields jobKeyword
和 location
,然后单击“搜索”按钮后 JSON 将显示在控制台中。
但如果不关闭重新运行的应用程序,我将无法获得新的搜索。如何在不离开应用程序的情况下更新我的字段并获得新的响应?我是 ios 开发的新手。这是 ViewController.swift:
import UIKit
import Alamofire
class ViewController: UIViewController
let headers = ["Host":"data.usajobs.gov",
"User-Agent":"dezbill@icloud.com",
"Authorization-Key":"********************"
]
@IBOutlet weak var jobKeywordTxt: UITextField!
@IBOutlet var locationTxt: UITextField!
@IBOutlet weak var locationState: UITextField!
override func viewDidLoad()
super.viewDidLoad()
override func viewDidAppear(animated: Bool)
super.viewDidAppear(true)
@IBAction func searchBtn(sender: UIButton)
let jobKeyword = jobKeywordTxt.text
let location = locationTxt.text
Alamofire.request(.GET, "https://data.usajobs.gov/api/Search", parameters:["LocationName":location!,"PositionTitle":jobKeyword!]).responseJSON response in
debugPrint(response)
print(self.locationTxt.text)
screenshot of project
【问题讨论】:
点击第二次搜索时会发生什么?代码看起来没问题。 我不确定您是在谈论异步函数、在后台请求和更新还是在获取 JSON 时出现问题。 例如:我在 jobKeyword 文本字段中输入“软件”,在位置文本字段中输入“迈阿密,佛罗里达”。单击搜索时,我在控制台中收到 JSON 响应。现在,如果我清除字段并为每个字段输入新值(例如“护士”和“德克萨斯州达拉斯”),然后再次单击搜索按钮,什么都不会发生! 您好,首先让我们澄清一下您的函数“searchBtn”是否会在您每次单击时被触发。简单地放一个日志,看看每次按下按钮时是否打印日志。然后我们就可以解决问题了。使用下面这行代码:) print("Function called") @Ruchira,已经这样做了,每次按下按钮时都会在控制台中记录城市名称 print(self.locationTxt.text)。如果您有兴趣解决问题,请将您的电子邮件发送给我,我会将您添加到回购中 【参考方案1】:你可以试试下面的代码,看看它是否有效。
Alamofire.request(.GET, "https://data.usajobs.gov/api/Search", parameters:["LocationName":location!,"PositionTitle":jobKeyword!])
.response request, response, data, error in
print(request)
print(response)
print(data)
print(error)
如果仍然无法正常工作,请尝试安装 Charles(Http 调试器)并通过 Charles 路由您的网络流量。然后,您至少可以确定是否每次都发送了请求。
【讨论】:
以上是关于如何在不关闭和重新加载应用程序的情况下获得新的 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章
如何保存 html 画布,然后在不丢失形状的情况下重新加载它?
如何在不重新加载页面的情况下重新启动 Angular 应用程序?