2

sitecoreによって作成されているjsonファイルからキーワードを検索するWebサイトの用語集ツールチップを作成しようとしています。jsonファイルから「Text:」の部分を取得し、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);

基本的に、データがHighlightKerywords関数にあるjsonの「Text:」ビットを返す必要があります。どこが間違っているのですか?

どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

3

関数が構文的に適切にフォーマットされていません。あなたの戻り値は、同期の例では成功関数の中に入る必要があり、ajax オブジェクトにランダムに配置されていません..

function getData() {
    $.ajax({
        async: false,
        url: '/_assets/js/glossary.json',
        dataType: 'json',
        success: function(data){
           //HighlightKeywords(data.Text);
           //or
           return(data.Text);
        }

    });
}
于 2012-09-24T13:00:55.263 に答える
1

Ajax は非同期通信です。その応答をグローバル変数に挿入して、それを操作できると期待することはできません。

成功関数の data.text ですべての作業を行う必要があります。

success: function(response){
           HighlightKeywords(response.Text);
        }
于 2012-09-24T13:01:10.080 に答える