前提・実現したいこと
JavaScriptCore でHTTPリクエストを実行しようとしているのですが
実行はできないのでしょうか
undefined で結果が返ってきてしまいます。
該当のソースコード
swift
1import UIKit 2import JavaScriptCore 3 4class ViewController: UIViewController { 5 6 let UTILITY_PATH = Bundle.main.path(forResource: "js", ofType: "js") 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 11 // JSを実行するためのContextを生成する 12 let context = JSContext() 13 14 // 読み込むJSファイルを文字列として取得 15 guard let path = Bundle.main.path(forResource: "js", ofType: "js") 16 else {return} 17 18 let url = URL(fileURLWithPath: path) 19 let js = try? String(contentsOf: url, encoding: String.Encoding.utf8) 20 21 // JavaScript を実行(読み込み) 22 _ = context?.evaluateScript(js) 23 24 // JavaScript の戻り値を取得 25 let test = context?.evaluateScript("getResponse()") 26 print(test!.toString()!) 27 28 } 29} 30 31
JavaScript
1function getResponse() { 2 3 // URL生成 4 var url = "http://zipcloud.ibsnet.co.jp/api/search?zipcode="; 5 6 // リクエスト生成 7 var request = new XMLHttpRequest(); 8 9 // リクエスト falseだと同期処理 10 request.open("GET", url); 11 12 request.send(null); 13 14 // 受信が完了したら 15 request.onloadend = function () { 16 if (request.readyState != 4) { 17 // リクエスト中 18 return "リクエスト中"; 19 } else if (request.status != 200) { 20 // 失敗 21 return "失敗"; 22 } else { 23 // 取得成功 24 return "取得成功"; 25 } 26 }; 27}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/13 03:09