在用户界面上,我有这个:
它是Gridview中的一个div,里面有一个JSON字符串,旁边是一个我想用作“复制到剪贴板”的图标。我已经有了CopyToClipBoard javascript方法,它工作正常。我遇到的问题是在onclick方法中获取json字符串。我试过的一些事情:
onclick='copyToClipboard("<%# Eval("LogText")%>")'
onclick="copyToClipboard('<%# Eval("LogText")%>')"
关于这个帖子的所有建议:
Passing Eval from ASPX to Javascript function as Parameter
这是完整的JSON字符串:
{
"DoorId": "11574544",
"DoorName": "out - door controller",
"CardNumber": "65529",
"FacilityCode": null,
"EventID": "570924d6-94b4-45b4-aa2d-9ab4075dc668",
"EventTimestamp": "2017-11-10 11:10:10.301",
"Name": "Norman Bates",
"AccessControlUserId": "15531926",
"OrganizationSys": 1012,
"AccessGranted": true,
"FirstName": "Norman",
"LastName": "Bates",
"Email": null,
"UserName": "normanbates",
"Password": "Password",
"Pin": null,
"CreateUserIfNotExists": false,
"CreateDoorIfNotExists": true,
"DoorStatusSys": 476,
"DoorLocationSys": 103979,
"AccessIntegrationSys": 100001
}
问题在于,所有引号似乎都搞砸了。至少我认为。例如,有了这个:
onclick='copyToClipboard("<%# Eval("LogText")%>")'
我明白了:
<img src="..." onclick="copyToClipboard("{"DoorId":"11574544","DoorName":"out - door controller","CardNumber":"65529","FacilityCode":null,"EventID":"570924d6-94b4-45b4-aa2d-9ab4075dc668","EventTimestamp":"2017-11-10 11:10:10.301","Name":"Norman Bates","AccessControlUserId":"15531926","OrganizationSys":1012,"AccessGranted":true,"FirstName":"Norman","LastName":"Bates","Email":null,"UserName":"normanbates","Password":"Password","Pin":null,"CreateUserIfNotExists":false,"CreateDoorIfNotExists":true,"DoorStatusSys":476,"DoorLocationSys":103979,"AccessIntegrationSys":100001}")">
当我点击图标时,我会在控制台中看到它:
参数列表之后的Uncaught SyntaxError:missing)
不确定如何做到这一点。
答案 0 :(得分:0)
您是否考虑过将json存储在javascript变量中,然后在该onclick事件中写入变量名?我已经取得了成功,我不得不javascript序列化我的json。
事实上,如果它是一个全局变量,您不必将其作为参数传递,但可以在页面上访问它。为什么不把你的json对象作为全局变量放在页面加载上解析,然后就可以从任何地方访问了。
e.g。
> as.POSIXlt.POSIXct("this")
[1] NA
Warning message:
In as.POSIXlt.POSIXct("this") : NAs introduced by coercion
>
背后的代码
<asp:literal runat="server" ID="litJsonBlob" />
<img src="..." onclick="doSomething(jsonBlob)" />
在变量中交替删除你的LogText straigt我不确切知道你的设置是什么:
var serializer = new JavaScriptSerializer();
var serializedResult = serializer.Serialize(LogText);
litJsonBlob.Text = string.Format("<script>var jsonBlob = JSON.parse('{0}')</script>")", serializedResult)
顺便说一下,我不知道json字符串来自哪里,但如果你把它放在文字控件中,请记住它很容易受到javascript注入攻击。
答案 1 :(得分:0)
尝试用“
替换json字符串中的引号Eval("LogText").Replace("\"",""")