2017-11-10 87 views
0

在用户界面上,我有这样的:通JSON字符串转换成客户方onclick事件从EVAL

enter image description here

这是一个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) after argument list

不知道怎么弄这个权利。

回答

0

你有没有考虑将你的json存储在一个javascript变量中,然后在该onclick事件中写一个变量名?我已经取得了成功,我不得不在JavaScript之前序列化我的JSON。

Infact如果它是一个全局变量,则不必将其作为参数传递,但可以在页面上访问它。为什么不把你的json对象放在页面上作为全局变量来解析,然后你就可以从任何地方访问它。

例如

<asp:literal runat="server" ID="litJsonBlob" /> 
<img src="..." onclick="doSomething(jsonBlob)" /> 

代码背后

var serializer = new JavaScriptSerializer(); 
var serializedResult = serializer.Serialize(LogText); 

litJsonBlob.Text = string.Format("<script>var jsonBlob = JSON.parse('{0}')</script>")", serializedResult) 

alternively放下你的LogText straigt在变,我不知道你的设立正是:

<script> var jsonBlob = JSON.parse('<%# Eval("LogText")%>'); </script> 
<img src="..." onclick="doSomething(jsonBlob)" /> 

通过我不知道在哪里的方式,JSON字符串来自但如果你把它放在字面控制里面,记住它很容易受到JavaScript注入攻击。

0

尝试"

Eval("LogText").Replace("\"","&quot;") 
替换您的JSON字符串引号