2014-04-01 12 views
1

我試圖採用基本的可序列化對象,該對象位於可串行字典中,並將其傳遞給將使用該信息生成模態的JavaScript函數。該對象有幾個字符串變量,沒有什麼複雜的。JSON在傳遞給javascript函數時序列化了意外的令牌

這裏是我傳遞的對象:

[Serializable] 
public class Details 
{ 
    public Details() {} 

    public string ID { get; set; } 
    public string Name { get; set; } 
} 

我設定的字符串相應的值,然後嘗試創建一個調用JavaScript的模態的鏈接(該ID是調用適當的:

protected string WriteDetailsLink(object ID) 
{ 
    string results = ""; 

    JavaScriptSerializer jss = new JavaScriptSerializer(); 
    results += "showDetailsModal(" + jss.Serialize(dictionaryList[ID.ToString()]) + "); return false;"; 

    return results; 
} 

而且aspx頁面上的HTML鏈接本身:

<a id='detailsDialog' onclick="<%# WriteDetailsLink(Eval("ID")) %>">Details</a> 

而且javasc對於模態RIPT功能,當前顯示什麼:

function showDetailsModal(Details) { 



    $('#DetailsModal_dialog').dialog(
    { 
     modal: true, 
     //height: 500, 
     width: 600, 
     resizable: false, 
     draggable: false, 
     open: function() { 

     }, 
     close: function(event, ui) {} 

    }); 
} 

一切工作正常,該ID被傳遞下去,當我檢查後運行的鏈接它看起來像這樣:

<a id='detailsDialog' onclick="showDetailsModal({"ID":"40662463","Name":"72485-3"}); return false;">Details</a> 

而且它看起來與我們項目中其他地方的代碼格式相同,但我一直收到

"Uncaught SyntaxError: Unexpected token ;"

錯誤。我不能爲了我的生活找出問題所在。如果我只將一個字符串傳遞給模態函數,它將起作用。我真的不想發送一堆笨拙的字符串,必須手動解析它們。


UPDATE:

是的,它是圍繞鏈接引號這是導致該問題。但現在我遇到了一個新問題:

我有一個模式的div設置,我試圖解析出名稱插入到它,這裏是新功能(通知名稱現在是BatchName) :

function showBatchDetailsModal(groupDetails) { 

    var tmpData = jQuery.parseJSON(groupDetails); 

    $('#DetailsModal_dialog').dialog(
    { 
     modal: true, 
     //height: 500, 
     width: 600, 
     resizable: false, 
     draggable: false, 
     open: function() { 
      $('#detailsName').text(tmpData.BatchName); 
     }, 
     close: function(event, ui) {} 

    }); 
} 

我越來越

"Uncaught SyntaxError: Unexpected token o " in jquery.min.js

+1

看起來像報價是搞砸了我! – adeneo

回答

1

更改onclick使用單引號來包裝函數調用:

onclick='<%# WriteDetailsLink(Eval("ID")) %>' 
+0

是的,就是這樣,非常感謝!但是我已經遇到了一個新問題,我已經更新了我原來的問題。 – user3486740

0

你的代碼應該是他跟着

function showBatchDetailsModal(groupDetails) { 

    var tmpData = groupDetails; // jQuery.parseJSON(groupDetails); 
    //Don't need to parse it into json. as its already parsed. 

    $('#DetailsModal_dialog').dialog(
    { 
     modal: true, 
     //height: 500, 
     width: 600, 
     resizable: false, 
     draggable: false, 
     open: function() { 
      $('#detailsName').val(tmpData.BatchName); //<--- .text(...) is changed to .val(...) 
      //If val(...) doesn't work use .text(...) 
     }, 
     close: function(event, ui) {} 

    }); 
} 
+0

不幸的是有同樣的錯誤 – user3486740

+0

更新了我的代碼.. –

相關問題