我试图获取一个基本的可序列化对象,该对象保存在一个可串行化的字典中,并将其传递给一个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>
它看起来与我们项目中其他地方的代码格式相同,但我不断获得
&#34;未捕获的SyntaxError:意外的令牌;&#34;
错误。我不能为我的生活弄清楚出了什么问题。如果我只将一个字符串传递给模态函数,它就可以工作。我真的不想发送一堆笨拙的字符串,必须手动解析它们。
更新:
是的,这是引起问题的链接周围的引号。但现在我遇到了一个新问题:
我已经为模态设置了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) {}
});
}
我正在
&#34;未捕获的SyntaxError:意外的令牌o&#34;在jquery.min.js
答案 0 :(得分:1)
将onclick
更改为使用单引号来包装函数调用:
onclick='<%# WriteDetailsLink( Eval( "ID" )) %>'
答案 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) {}
});
}