如何在不关闭和重新加载应用程序的情况下获得新的 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 jobKeywordlocation,然后单击“搜索”按钮后 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 应用程序?

Firestore 在不重新加载应用程序的情况下不更新 SwiftUI 网格

如何在不更新应用程序的情况下重新加载 Cordova 应用程序的 UI