将json文件的一部分作为jquery中的变量返回

时间:2012-09-24 12:50:47

标签: javascript jquery json

我正在尝试为网站创建词汇表工具提示,该网站可以找到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位。我哪里错了?

非常感谢任何帮助。感谢

2 个答案:

答案 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);
        }