我将以下行作为javascript写入html文件的末尾。由于某种原因,将place变量写入文件后,会添加一个新行或一些类似的字符。我不介意这一点,因为我不会通过书面文字查看,但Chrome告诉我这是一个非法的角色。
写入html的代码:
map_html.write(
"geocoder.geocode( { 'address': '" + place + "'}, function(results, status) {\n\
var marker = new google.maps.Marker();\n\
marker.setPosition(results[0].geometry.location);\n\
marker.setMap(map);\n\
bounds.extend(marker.position);\n\
});\n"
)
输出:
geocoder.geocode( { 'address': 'Brooklyn, NY
'}, function(results, status) {
var marker = new google.maps.Marker();
marker.setPosition(results[0].geometry.location);
marker.setMap(map);
bounds.extend(marker.position);
});
答案 0 :(得分:2)
用以下代码替换您的代码:
var geo_json = JSON.stringify({ 'address': place});
map_html.write(
"geocoder.geocode(" + geo_json + ", function(results, status) {\n\
var marker = new google.maps.Marker();\n\
marker.setPosition(results[0].geometry.location);\n\
marker.setMap(map);\n\
bounds.extend(marker.position);\n\
});\n"
)
这将回避问题,并允许您查看stringify
ed json的样子。编写自己的json通常是一个坏主意。让javascript生成json,它很擅长。
如果仍然会导致疼痛,请尝试var geo_json = JSON.stringify({ 'address': place.trim()});
,这会从place
字符串的末尾删除空格。
如果仍然会导致疼痛,请尝试使用正则表达式来验证place
输入。像[A-Za-z_ ,]+
修改强>
哦,废话,我在这里混淆了javascript和python。
import json
geo_json = json.dumps({ 'address': place})
map_html.write(
"geocoder.geocode(" + geo_json + ", function(results, status) {\n\
var marker = new google.maps.Marker();\n\
marker.setPosition(results[0].geometry.location);\n\
marker.setMap(map);\n\
bounds.extend(marker.position);\n\
});\n"
)
答案 1 :(得分:0)
尝试多线字符串怎么样?
map_html.write(
"geocoder.geocode( { 'address': " + place + "}, function(results, status) {" + """
var marker = new google.maps.Marker();
marker.setPosition(results[0].geometry.location);
marker.setMap(map);
bounds.extend(marker.position);
});
"""
)