在 UIWebView 中从 JavaScript 获取 return 值
Getting return value from JavaScript in UIWebView
我想在我的 ViewController,
中获取 JavaScript return 值
问题是,如果有像 String 这样的少量数据,我正在获取它。
但如果有像JSON对象这样的大数据,则显示为nil。
当我在 Safari > 开发 > iOS 模拟器中调用相同的 JS 函数时,它会在 1-2 秒后给出 JSON 对象。
这是我的代码:
var value = IBwebView.stringByEvaluatingJavaScriptFromString("get_small_string()")
println(value) //Printing value
但这会打印 nil,
var value = IBwebView.stringByEvaluatingJavaScriptFromString("get_JSON()")
println(value) //Printing nil
任何人都知道如何在 iOS 对象中获取大尺寸 JS return 值?
如果您的 java 脚本方法 "get_JSON()" return 超过 10 MB 的数据,则 stringByEvaluatingJavaScriptFromString 方法不允许。
或者如果处理输出需要超过 10 秒,在这种情况下,您将获得 nil 值作为输出。
一旦你return一个对象它就不会工作,你可以尝试的是return你的对象的字符串化版本
JSON.stringify(yourObject);
并在本机端解析此字符串。
这解决了我的问题,
var value = IBwebView.stringByEvaluatingJavaScriptFromString("get_JSON()")
var err:NSError?
var obj:AnyObject? = NSJSONSerialization.JSONObjectWithData(value!.dataUsingEncoding(NSUTF8StringEncoding)!, options:nil, error:&err)
if let items = obj as? NSDictionary {
var data1:String = items.objectForKey("data1") as? String
var data2:String = items.objectForKey("data2") as? String
var data3:String = items.objectForKey("data3") as? String
}
我想在我的 ViewController,
中获取 JavaScript return 值问题是,如果有像 String 这样的少量数据,我正在获取它。
但如果有像JSON对象这样的大数据,则显示为nil。
当我在 Safari > 开发 > iOS 模拟器中调用相同的 JS 函数时,它会在 1-2 秒后给出 JSON 对象。
这是我的代码:
var value = IBwebView.stringByEvaluatingJavaScriptFromString("get_small_string()")
println(value) //Printing value
但这会打印 nil,
var value = IBwebView.stringByEvaluatingJavaScriptFromString("get_JSON()")
println(value) //Printing nil
任何人都知道如何在 iOS 对象中获取大尺寸 JS return 值?
如果您的 java 脚本方法 "get_JSON()" return 超过 10 MB 的数据,则 stringByEvaluatingJavaScriptFromString 方法不允许。
或者如果处理输出需要超过 10 秒,在这种情况下,您将获得 nil 值作为输出。
一旦你return一个对象它就不会工作,你可以尝试的是return你的对象的字符串化版本
JSON.stringify(yourObject);
并在本机端解析此字符串。
这解决了我的问题,
var value = IBwebView.stringByEvaluatingJavaScriptFromString("get_JSON()")
var err:NSError?
var obj:AnyObject? = NSJSONSerialization.JSONObjectWithData(value!.dataUsingEncoding(NSUTF8StringEncoding)!, options:nil, error:&err)
if let items = obj as? NSDictionary {
var data1:String = items.objectForKey("data1") as? String
var data2:String = items.objectForKey("data2") as? String
var data3:String = items.objectForKey("data3") as? String
}