繁体   English   中英

写入文件时添加了奇怪的字符

[英]Strange character added when writing to file

我将以下行作为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);
        });

将代码替换为:

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"
)

尝试多行字符串怎么样?

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);
    });
    """
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM