2017-11-10 88 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字符串引號