Получить URL окна внутри JSON

#javascript #json #extjs #aem

#javascript #json #extjs #aem

Вопрос:

Есть ли какой-либо способ получить URL-адрес окна внутри Json. Я пробовал ниже, но не работает. JSON используется для отображения виджета. Ниже приведен фрагмент кода.

 CQ.wcm.ContentFinderTab.getResultsBoxConfig({
            "itemsDDGroups": [CQ.wcm.EditBase.DD_GROUP_ASSET],
            "itemsDDNewParagraph": {
                "path": "foundation/components/image",
                "propertyName": "./fileReference"
            },
            "noRefreshButton": true,
            "tbar": [
                CQ.wcm.ContentFinderTab.REFRESH_BUTTON,
                "->",
             {

            "url": "/bin/wcm/contentfinder/asset/viewnew.json" window.location.href;
        }, {
            "baseParams": {
                /*"defaultMimeType": "image"*/
                "mimeType": "image"
            },
            "autoLoad":false,
            "reader": new CQ.Ext.data.JsonReader({
                "totalProperty": "results",
                "root": "hits",
                "fields": [
                    "name", "path", "title", "mimeType", "ddGroups", "size", "lastModified", "ck", "templateParams", "imageWidth", "imageHeight"
                ],
                "id": "path"
            })
        })
  

Спасибо

Комментарии:

1. Что вы пытаетесь сделать? Добавление URL-адреса к самому файлу?

2. Что означает «внутри JSON» — показать больше кода

3. На самом деле это обратный вызов, хотите попасть в сервлет с URL-адресом окна в качестве параметра запроса.

4. Когда вы имеете в виду URL-адрес окна, вам нужен только путь к содержимому или весь URL-адрес. Я имел в виду /content/xyz/something.html или http://somedomain.com/cf#/content/xyz/something.html ?

5. Мне нужно только /content/xyz/something.html или никаких проблем, если я получу полный путь.

Ответ №1:

Здесь нет JSON. Просто объектный литерал

Вам нужно удалить завершающую точку с запятой из объекта, который вы отправляете, и, возможно, добавить имя параметра. Я бы также закодировал URL-адрес

 {"url": "/bin/wcm/contentfinder/asset/viewnew.json?url=" 
  encodeURIComponent(window.location.href)
},
  

Если вам нужен только хэш, вам не нужны ни имя параметра, ни кодирование

 {"url": "/bin/wcm/contentfinder/asset/viewnew.json"  location.hash},
  

Если в хэше больше материала, чем вы хотите, вам нужно его разделить

 {"url": "/bin/wcm/contentfinder/asset/viewnew.json"  
 location.hash.split(".html")[0] ".html"
},
  

или, чтобы быть уверенным:

 {"url": "/bin/wcm/contentfinder/asset/viewnew.json"  
 (location.hash.indexOf(".html")!=-1?location.hash.split(".html")[0] ".html":location.hash)
},
  

Комментарии:

1. Хорошо, я удалил точку с запятой, но она все еще не работает. Источник моей страницы, показывающий «url»: «/bin/wcm/contentfinder/asset/viewnew.json» window. Расположение. href, а не значение window . location.href

2. Какой источник страницы? getResultsBoxConfig должен получить URL-адрес и что-то с ним сделать.

3. Привет encodeURIComponent(окно. location.hash), похоже, решил проблему, дав мне результат ниже localhost:4502/bin/wcm/contentfinder/asset/viewnew.json#/content/Company/en/Article.html?_dc=1403269699278amp;query=amp;mimeType=imageamp; _ но я не хочу в закодированном формате. просто ищу content/Company/en/Article.html .

4. Поэтому используйте вторую версию БЕЗ кодировки