在我的應用程序,我需要發送一個數組從目標C到JavaScript。我,我可以使用這個指令在網絡上閱讀:stringByEvaluatingJavaScriptFromString
,也是我做了這麼:發送NSArray到javascript
目標C片斷
NSMutableArray *names = [[NSMutableArray alloc]init];
NSMutableArray *srcs = [[NSMutableArray alloc]init];
for (int i = 0; i < [site count]; i++) {
NSDictionary *dictData = [site objectAtIndex:i];
[names addObject:[dictData objectForKey:@"name"]];
[srcs addObject:[dictData objectForKey:@"src"]];
}
// UPDATE
NSData *jsonArray = [self arrayToJson:nameSrc];
NSString *jsonString = [[NSString alloc]initWithData:jsonArray encoding:NSUTF8StringEncoding];
NSString *econdedString = [self base64String:jsonString];
NSString *jsCall = [NSString stringWithFormat:@"dataFromObjC(\"%@\")", econdedString];
[self.webView stringByEvaluatingJavaScriptFromString:jsCall];
因此JavaScript我做了有此名dataFromObjC(names, srcs)
的功能,但它沒有向我顯示我所做的警報。 我會在這裏發佈我的html的完整代碼,所以你可以幫我解決這個問題。
HTML代碼
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
<title>Lista coupon</title>
<script src="../js/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="../js/memoria.js" type="text/javascript"></script>
<script type="text/javascript" src="../js/base64.js"></script>
<script type="text/javascript">
function dataFromObjC(encodedArray) {
var jsonString = Base64.decode(encodedArray);
var arrayFromiOS = JSON.parse(jsonString);
alert(jsonString);
}
</script>
<style type="text/css">
body {
background-color: #000000;
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
ul {
list-style-type: none;
padding: 5px;
}
li {
color: #FFFFFF;
font-family: sans-serif;
padding-bottom: 5px;
}
p {
color: #FFFFFF;
font-family: sans-serif;
padding: 5px;
text-align: center;
}
a {
text-decoration: none;
color: #FFFFFF;
}
</style>
</head>
<body onload="loadJson();">
<div id="header">
</div>
<div id="content">
<p>Di seguito trovi tutte le promozioni salvate</p>
<div id="list">
</div>
</div>
<div id="footer">
</div>
</body>
</html>
我希望你能幫助我。
謝謝
您應該使用'NSJSONSerialization'將所有數據編碼爲JSON,並在JS land中進行解碼。 –
@MikeWeller:讓我們看看我是否理解得很清楚:在目標C中,我必須用NSJSONSerialization編碼2個NSArray,然後在javascript中解碼?你能否更好地解釋我,也許你可以把你的解決方案作爲答案? – lucgian84