|
Функция jQuery ajax() в вебчасти редактора скриптов (SEWP). Не работает.
|
|||
---|---|---|---|
#18+
Делаю пример из книжки. Пример простой, тема - веб часть "Редактор сценариев" (Script Editor). Пока скрипт содержал обычные alert() с "Hellow Word" внутри, все было хорошо. Но вот дошли до момента, когда автор решил продемонстрировать работу REST API шаропойнта через эту самую веб часть. Итак.. вставляем скрипт в SEWP (уже изменен под название моего сайта и списка): <script type="text/javascript"> $(function() { $.ajax({ url: "/contracts3/_api/web/lists/GetByTitle('list1')", type: "GET", headers: { "accept": "application/json;odata=verbose" }, }).success(function(data) { alert(data.d.Title + " : " + data.d.Created); }); }); </script> И тишина... Оговариваю сразу: jQuery подключен, если мы вставляем alert('123') внутрь $(function(){...}) - окно выскакивает. Запуск скрипта ведется из самой страницы списка этого листа (AllItems.aspx списка list1). Список принадлежит сайту contracts3, который является дочерним главного сайта семейства. Пробовал и "/_api...." и полный путь: " http://spdev/contracts3/..." - полный игнор. Просто строка в браузере: http://spdev/contracts3/_api/web/lists/GetByTitle('list1') - работает, получаем на страницу перечень свойств списка. Там есть и объект d и d.Title - все как по примеру. Создал простой html файл: <html> <head> <script src=" http://code.jquery.com/jquery-3.1.0.min.js" integrity="sha256-cCueBR6CsyA4/9szpPfrX3s49M9vUU5BgtiJj06wt/s=" crossorigin="anonymous"></script> </head> <body> <script type="text/javascript"> $(function() { alert('1232'); $.ajax({ url: "http://spdev/contracts3/_api/web/lists/GetByTitle('list1')", type: "GET", success: function(data) { alert(data.d.Title + " : " + data.d.Created); }, error: function(e){alert('error!!!');}, complete: function(){alert('complete!!!');}, }); }); </script> </body> </html> Функция ajax работает - вызываются колбэки error и complete. Был наивен, полагал, что смогу получить результат - шаропойнт отказывается работать с файлом. Но хотя бы видно, что метод ajax отрабатывает. Вывод - синтаксически инструкции написаны верно. Но если они выполняются под вебчастью редактора скриптов на странице SP, то метод ajax как-буд-то игнорируется. Я вставлял в скрипт и колбеки на error и complete - все тихо. Чем можно объяснить такую реакцию SP? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 15:23 |
|
Функция jQuery ajax() в вебчасти редактора скриптов (SEWP). Не работает.
|
|||
---|---|---|---|
#18+
Как-то без регистрации получилось опубликовать сообщение. Ладно. И еще вопрос - как можно отлаживать скрипты в SEWP - на странице у меня отключается возможность отладки. Могу только исходный код посмотреть, но точек остановки мне уже не поставить. Есть какой-то способ отладки? Может через Visual Studio это можно посмотреть? Подразумеваю конечно отладку в составе страницы SP, а не голый скрипт в отдельном файле. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 15:28 |
|
Функция jQuery ajax() в вебчасти редактора скриптов (SEWP). Не работает.
|
|||
---|---|---|---|
#18+
Нашел на этом же форуме интересную статью: http://www.sql.ru/blogs/gandjustas/1679 Она предоставила поле для экспериментов! Переписал скрипт так: <script type="text/javascript"> $(function() { var request = new Sys.Net.WebRequest(); request.set_url("/contracts3/_api/web/lists/GetByTitle('list1')"); request.set_httpVerb("GET"); request.add_completed(function(executor, eventArgs) { if(executor. get_responseAvailable()) { var dd = executor.get_responseData(); $("#divHellowWorld").html(dd); } }); request.invoke(); }); </script> dd содержат данные по списку, правда это формат XML, запросить JSON - это другой вопрос. Главное, запрос стал работать. Между тем вопрос темы остается открытым - почему стандартная функция ajax() не работает? Причем не работает так, что будучи внедренной в страницу шаропойнта, не работает ни один из ее обработчиков: success, error, complete? Ошибок нет, код до нее и за ней выполняется (проверял алертами). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 16:44 |
|
Функция jQuery ajax() в вебчасти редактора скриптов (SEWP). Не работает.
|
|||
---|---|---|---|
#18+
И все равно как-то грустно. В примере, используя метод jquery ajax() мы должны были получить простой для чтения объект json, метод не работает. Замена нашлась - Sys.Net.WebRequest(); Но как его заставить возвратить нечто удобное. На выходе получается xml формата: <?xml ...> <entry> <id>...</id> <category ...>...</category> ... куча <link href=....> ... наконец: <content type="application/xml"> <m:properties> <d:имя_свойства_списка ...>значение</d:имя_свойства_списка> ... </m:properties> </content> </entry> Как с этим работать? Можно поконкретнее, какие функции посмотреть в javascript? Может это можно в json перевести - у меня не получилось. Или может быть свой запрос настроить так, чтобы в качестве ответа приходил json? Лучше было бы объяснить, почему не сработала функция ajax()... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2016, 16:23 |
|
Функция jQuery ajax() в вебчасти редактора скриптов (SEWP). Не работает.
|
|||
---|---|---|---|
#18+
Вынужден извиниться. Все заработало. Вчера это обнаружил во время примера со ссылкой на html-страницу в CEWP. Сегодня попробовал напрямую вставить html в редактор контента - все хорошо. И по F-12 так же захожу в отладчик. Не знаю, что было, но не без пользы - для себя нашел альтернативные варианты запросов к SP, почитал дополнительный материал. Тема закрыта. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 10:18 |
|
|
start [/forum/topic.php?fid=12&fpage=4&tid=1329942]: |
0ms |
get settings: |
23ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
195ms |
get tp. blocked users: |
3ms |
others: | 345ms |
total: | 666ms |
0 / 0 |