JSON 序列化问题:意外令牌

json serialize issue: unexpected token

本文关键字:意外 令牌 问题 序列化 JSON      更新时间:2023-09-26

>我正在尝试获取一个基本的可序列化对象,该对象保存在可系列字典中,并将其传递给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 中的"未捕获语法错误:意外标记 o".js

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

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

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

您可以使用检查元素在 chrome 的控制台中对此进行测试。您错过了 我放在解析函数中的' '

你的代码应该是他遵循的

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) {}
    });
}