我在将一些JSON数据解析为原始对象数组时遇到了问题,这就是
我有以下原始数据(JavaScript)例如:
var points = [];
points = [
{ lat: "38.713852", lng: "-9.145621", data: "<div align=left class=gMapsOverlay><span>Loja centro de Braga</span></div>", options: { icon: '../layout/icon_map_point.png' } },
{ lat: "39.825751", lng: "-7.479642", data: "<div align=left class=gMapsOverlay><span>Apartamento T3</span></div>", options: { icon: '../layout/icon_map_point.png' } },
{ lat: "38.730638", lng: "-9.139604", data: "<div align=left class=gMapsOverlay><span>Apartamento Duplex</span></div>", options: { icon: '../layout/icon_map_point.png' } }
];
我必须按照我试图解释的方式执行此操作,我需要将其发送到ID为“ hdd_GmapPoints”的隐藏字段(在这种情况下),如下所示:
private void SetMap () {
string aux = "";
string[] lat = new string[3];
string[] lng = new string[3];
string[] designacao = new string[3];
lat[0] = "38.713852";
lat[1] = "39.825751";
lat[2] = "38.730638";
lng[0] = "-9.145621";
lng[1] = "-7.479642";
lng[2] = "-9.139604";
designacao[0] = "Loja centro de Braga";
designacao[1] = "Apartamento T3";
designacao[2] = "Apartamento Duplex";
for(int i = 0; i < lat.Length; i++) {
aux += "{ lat: \"" + lat[i].ToString().Replace(",", ".") + "\", " +
"lng: \"" + lng[i].ToString().Replace(",", ".") + "\", " +
"data: \"<div align=left class=gmapsoverlay><span>" + designacao[i] + "</span></div>\", " +
"options: { icon: '../layout/icon_map_point.png' } },";
//aux[idx] = "{ lat: \"" + r["latitude"].ToString().Replace(",", ".") + "\", " +
// "lng: \"" + r["longitude"].ToString().Replace(",", ".") + "\", " +
// "data: '<div align=left class=gMapsOverlay><span>" + r["designacao"] + "</span></div>', " +
// "options: { icon: '../layout/icon_map_point.png' } }";
}
if(aux != "") {
//hdd_GmapPoints.Value = aux.ToString();
//hdd_GmapPoints.Value = aux.Substring(0, aux.Length - 1);
var jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string json = jsonSerializer.Serialize(aux.ToString().Substring(0, aux.ToString().Length - 1));
hdd_GmapPoints.Value = json;
}
}
然后,我必须将其解析回对象的Javascript数组,这是我的JavaScript代码:
function setMap() {
var points = [];
points = [
{ lat: "38.713852", lng: "-9.145621", data: "<div align=left class=gMapsOverlay><span>Loja centro de Braga</span></div>", options: { icon: '../layout/icon_map_point.png' } },
{ lat: "39.825751", lng: "-7.479642", data: "<div align=left class=gMapsOverlay><span>Apartamento T3</span></div>", options: { icon: '../layout/icon_map_point.png' } },
{ lat: "38.730638", lng: "-9.139604", data: "<div align=left class=gMapsOverlay><span>Apartamento Duplex</span></div>", options: { icon: '../layout/icon_map_point.png' } }
];
//points = [str1.split('%')];
var aux = $("#<%=hdd_GmapPoints.ClientID %>").val();
var points2 = eval(aux);
//var points2 = JSON.parse(aux);
console.log("TYPE 1: " + $.type(points));
console.log("CONTENT 1:" + points);
console.log("TYPE 2: " + $.type(points2));
console.log("CONTENT 2:" + points2);
console.table(points);
}
但这不起作用,因为它向我显示了一个作为字符串的柔软对象,这是我从console.log(points2);获得的结果
“ {lat:” 38.713852“,lng:”-9.145621“,数据:” Loja centro de Braga“,选项:{图标:'../ layout / icon_map_point.png'}},{lat:” 39.825751“,lng :“ -7.479642”,数据:“ Apartamento T3”,选项:{图标:'../ layout / icon_map_point.png'}},{纬度:“ 38.730638”,lng:“-9.139604”,数据:“ Apartamento Duplex “,选项:{图标:'../layout/icon_map_point.png'}}”
我需要这个给什么
console.table(points);
给
同样,我需要通过hiddenfield将其从c#发送到JQuery,代码必须通过该hiddenfield传递。
有人知道吗?
参考方案
好的,很抱歉,抽出大家的时间,但是我找到了解决方案,因为我不太擅长C#,所以我没想到这样做会奏效。
我所做的实际上是在后面的代码中创建对象,这样,我就将整个对象从c#完全传递给具有JSON的javascript。
//declared this 2 classes at the top
class Options {
public string icon {
get;
set;
}
}
class Aux {
public string lat {
get;
set;
}
public string lng {
get;
set;
}
public string data {
get;
set;
}
public Options options {
get;
set;
}
}
private void SetMap () {
Options opt = new Options();
List<Aux> aux = new List<Aux>();
//this is to make the code to work with dinamic content
string[] latitude = new string[3];
string[] longitude = new string[3];
string[] designacao = new string[3];
latitude[0] = "38.713852";
latitude[1] = "39.825751";
latitude[2] = "38.730638";
longitude[0] = "-9.145621";
longitude[1] = "-7.479642";
longitude[2] = "-9.139604";
designacao[0] = "Loja centro de Braga";
designacao[1] = "Apartamento T3";
designacao[2] = "sxpto";
for (int i=0; i< 3; i++){
opt.icon = "../layout/icon_map_point.png";
//this is what it's really needed
aux.Add(new Aux {lat = latitude[i], lng = longitude[i], data = "div align=left class=gmapsoverlay><span>"+designacao[i]+"</span></div>", options = opt});
}
// end of dinamic content
if(aux != null) {
//parse the whole object to JSON
var jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string json = jsonSerializer.Serialize(aux);
hdd_GmapPoints.Value = json;
}
}
在javascript端,只需解码隐藏字段
var aux = $("#<%=hdd_GmapPoints.ClientID %>").val();
var points2 = JSON.parse(aux);
将Web用户控件添加到页面时,asp按钮onclick不会触发 - javascript我正在使用使用Visual Studio模板创建的Web表单应用程序。模板具有一个内容占位符,该占位符被访问的任何页面的内容替换。有问题的页面有几个服务器控件,例如文本框,标签和按钮。当我单击我的更新按钮时,它可以正常工作,这些值会回传并更新数据库。我想在所有子页面上创建通用的登录提示。我的导航栏(位于我的母版页中)具有引导程序设置。我在导航栏中添加了一个下…
Telerik单选按钮所需的字段验证器 - javascript如何设置Telerik单选按钮所需的字段验证器?我想在按钮单击“ BtnSave”上设置必填字段验证器吗?请帮忙!<telerik:RadButton ID="radio_male" runat="server" ToggleType="Radio" AutoPostBack="fa…
用symfony隐藏树枝中的表格行 - javascript我正在开始编码。我正在使用Symfony 3.3我想用复选框隐藏(并显示)表上的a或某些特定行。我尝试使用javascript和jquery。我希望隐藏的行保持隐藏状态。我不知道该怎么做。这是我的树枝{% block body %} <div class="container"> <h3>List of produ…
表单不提交或按钮提交不起作用 - javascript据我所知,此代码必须有效,但是我编码时却无效问题在于该表单未提交。我该如何解决?选中时,我什至没有得到复选框的值。<table id="example" class="display" cellspacing="0" width="100%"> <thead&g…
在PHP文件中调用javascript函数并在加载HTML文件之后? - javascript我需要在我的php中调用js函数,但无法正常工作。有人可以告诉我我在做什么错吗?我该如何轻松地做到这一点?谢谢!我有三个文件: mail.php负责发送$ _POST的内容(工作正常)。我调用我的javascript函数来切换模式,具体取决于邮件是否已发送。 <? ... $response = $sendgrid->send($email);…