我有一个数据表,对于每一行,我需要执行一个 javascript 函数(相同的 javascript 函数,但具有不同的值)。
对于每一行,它执行一个 JavaScript 函数,并将结果返回到后面的代码(通过 Web 方法)。
但是,在我的实际代码中,该函数只执行一次(表的第一行)。
我有这个: c#
string strScript = "";
foreach (DataRow row in dtLodgings.Rows)
{
strScript = strScript + "\n" + "GetInfoGMaps('" + row["Name"].ToString() + "'," + row["Latitude"].ToString().Replace(",", ".") + "," + row["Longitude"].ToString().Replace(",", ".")+ ");";
}
strScript = strScript.Replace("'", "\'");
ClientScript.RegisterStartupScript(GetType(), "GetInfoGMaps", strScript, true);
JavaScript
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true&libraries=places"></script>
var map, service;
function GetInfoGMaps(name, latitude, longitude) {
var loc= null;
if (latitude != "" && longitude != "") {
loc = new google.maps.LatLng(latitude, longitude);
}
map = new google.maps.Map(document.getElementById('map-canvas'), {
center: loc,
zoom: 15
});
service = new google.maps.places.PlacesService(map);
var request = {location: loc, radius: 50000, keyword: name};
service.radarSearch(request, callback); // i got the data and i sent to c# trought ajax
}
c#
[WebMethod]
public static void GetInfoGMaps(InfoMaps lodg)
{
if (lodg != null)
{
// the data is saved in database
}
}
我尝试在控制台(chrome Web 浏览器)中执行 strString,但我得到未定义,我不明白为什么。似乎当我运行 RadarSearch 函数时给出了未定义。
GetInfoGMaps('Mak Albania Resort Durres',41.2314605712891,19.5132293701172);
GetInfoGMaps('Mak Albania Resort Durres',41.2314605712891,19.5132293701172);
GetInfoGMaps('Mak Albania Resort Durres',41.2314605712891,19.5132293701172);
有人可以帮助我吗?
谢谢
最佳答案
根据 documentation ,每个启动脚本都由其 key 和类型唯一标识。具有相同键和类型的脚本被视为重复。像这样为每个键添加唯一值..
int i = 0;
foreach (DataRow row in dtTable.Rows) {
ClientScript.RegisterStartupScript(GetType(), "GetInfoGMaps" + i, "GetInfoGMaps('" + row["Name"].ToString() + "'," + row["Latitude"].ToString().Replace(",", ".") + "," + row["Longitude"].ToString().Replace(",", ".")");", true);
i++;
}
关于javascript - 在代码隐藏(c#)中多次执行javascript函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29844905/