我正在尝试为网站创建词汇表工具提示,该网站可以找到sitecore创建的json文件中的关键字。我需要得到" Text:"来自json文件的部分然后在我的jquery中创建一个变量,这样它们就是找到并用适当的标签包装的关键字。我让它工作到我可以让控制台记录我的json文件中有2个条目的那一点,但那就是它。
这是我的示例json代码:
[{"Id":"ef339eaa-78e1-4f9e-911e- 096a1920f0b6","Name":"Glossary","DisplayName":"Glossary","TemplateId":"b27d2588-3d02-4f5f-8064-2ee3b7b8eb39","TemplateName":"Glossary","Url":"/Global-Content/Glossary/Glossary","Version":1,"Created":"\/Date(1343987220000)\/","CreatedBy":"sitecore\\rgoodman","Revision":"ae8b3ae0-d0ca-4c4a-9f27-a542a31ab233","Updated":"\/Date(1348137810133)\/","UpdatedBy":"sitecore\\admin","Text":"Glossary","Content":"A bit of test content for the glossary"},{"Id":"3fa51ad4-cfb6-4ff1-a9b5-5276914b2c23","Name":"Abraham","DisplayName":"Abraham","TemplateId":"b27d2588-3d02-4f5f-8064-2ee3b7b8eb39","TemplateName":"Glossary","Url":"/Global-Content/Glossary/A/Abraham","Version":1,"Created":"\/Date(1348148640000)\/","CreatedBy":"sitecore\\admin","Revision":"231284ec-9fb9-4502-ad79-a5806479ecba","Updated":"\/Date(1348148779656)\/","UpdatedBy":"sitecore\\admin","Text":"Abraham","Content":"This is a lincoln person"}]
但我认为这没有任何用处,因为它只是"文字:"部分我期待回来。
这是我的jquery:
function getData(url) {
var data;
$.ajax({
async: false,
url: '/_assets/js/glossary.json',
dataType: 'json',
success: function(data.Text){
data.Text = response;
}
return(response);
});
}
function HighlightKeywords(keywords)
{
var el = $("body");
$(keywords).each(function()
{
var pattern = new RegExp("(" +this+ ")", ["gi"]);
var rs = "<mark href='#' class='tooltip'>$1</mark>";
el.html(el.html().replace(pattern, rs));
});
}
HighlightKeywords(data.Text);
基本上我需要返回&#34;文字:&#34;数据在HighlightKerywords函数上的json位。我哪里错了?
非常感谢任何帮助。感谢
答案 0 :(得分:3)
您的函数在语法上没有正确格式化。您的返回必须在同步示例中的success函数内部,而不是随机放在ajax对象中。
function getData() {
$.ajax({
async: false,
url: '/_assets/js/glossary.json',
dataType: 'json',
success: function(data){
//HighlightKeywords(data.Text);
//or
return(data.Text);
}
});
}
答案 1 :(得分:1)
Ajax是异步通信,您不能将其响应插入到全局变量中,并希望能够使用它。
您需要在success函数中对data.text进行所有工作。
success: function(response){
HighlightKeywords(response.Text);
}