json序列化问题:意外令牌

时间:2014-04-02 01:35:45

标签: javascript jquery 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>

模态的javascript函数,目前没有显示任何内容:

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>

我有一个模态的div设置,我试图解析插入其中的名称,这是新函数

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.Name);
        },
        close: function(event, ui) {}

    });
}

我正在

  

jquery.min.js中的“Uncaught SyntaxError:Unexpected token o”

$('#detailsName')也是如此.val(tmpData.Name);和.value。

2 个答案:

答案 0 :(得分:0)

var jsonObj = JSON.parse('{"ID":"40662463","Name":"72485-3"}');

然后,如果你只是放jsonObj.ID,你得到的值为40662463。

您可以使用inspect元素在chrome的控制台中测试它。你错过了 我放入解析函数的' '

答案 1 :(得分: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) {}

    });
}