Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.03.2015, 01:03
Интересующийся
Отправить личное сообщение для glot Посмотреть профиль Найти все сообщения от glot
 
Регистрация: 26.10.2008
Сообщений: 24

JSONP+GreaseMonkey+GAS
Здравствуйте.
у меня следующая проблема, я не могу получить ответ от GAS через JSONP.
кусок кода GM
var urlAPP="https://script.google.com/macros/s/AKfycby1bs7AbTMIfUx0_lltnPPpQOc5FVSPs1JD9oG9E_FUXXXXXX/exec?";
var paramsAPP="rate="+GM_getValue('Rate',7)+"&fixsum="+GM_getValue('FixSum',0)+"&callback";
  console.log(urlAPP+paramsAPP);
JSONP(urlAPP+paramsAPP, function(response) {
    console.log(response);

alert(response);
  });

вот код GAS:
// Script-as-app template.
function doGet(e) {
  try {
    var rate=+e.parameter.rate;
    var fixsum=+e.parameter.fixsum;
  var urlSS='https://docs.google.com/spreadsheets/d/1ySQrRkxTxksoy9bD8IFHys_48ie6pSnDvJrUc5xxxx/edit'
    var ss =SpreadsheetApp.openByUrl(urlSS);
    var sheet = ss.getSheets()[1];
    
        sheet.appendRow([rate, fixsum]);
   
    return ContentService.createTextOutput(e.parameter.callback + '.call(this,"OK")').setMimeType(ContentService.MimeType.JAVASCRIPT);
  } catch(e) {
    return ContentService.createTextOutput(e.parameter.callback + '.call(this,"ERROR")').setMimeType(ContentService.MimeType.JAVASCRIPT);
  } 
 
}

GM правильно отправляет запрос, GAS правильно обрабатывает и формирует ответ,но я не могу получить и разобрать ответ. в консоли сообщение

ReferenceError: __JSONP__4 is not defined

сформированный ответ GAS

__JSONP__4.call(this,"OK")

Использую библиотеку
http://devpro.it/code/209.html

пример использования
http://webreflection.blogspot.ru/201...for-jsonp.html

PS пробовал вместо .call(this,"OK"), ставить .call(window,"OK"), ноль эмоций
Куда втыкать лом?
Ответить с цитированием
  #2 (permalink)  
Старый 07.03.2015, 02:44
Интересующийся
Отправить личное сообщение для glot Посмотреть профиль Найти все сообщения от glot
 
Регистрация: 26.10.2008
Сообщений: 24

Разобрался, jsonp работает только через unsafeWindow

в GM в шапку добавляем
// @grant       unsafeWindow

в html страницу (в head) дописываем
<script src="http://taorus.ru/js/JSONP.js" type="text/javascript"></script>
<script>function callGoogle(sURL){
JSONP(sURL, function(response) {
//код обработчика
alert(response);})
}
</script>

в теле скрипта GM вызываем функцию unsafeWindow.callGoogle(sURL)
var urlAPP="https://script.google.com/macros/s/AKfycby1bs7AbTMIfUx0_lltnPPpQOc5FVSPs1JD9oG9E_FUXXXXXX/exec?";
var paramsAPP="rate="+GM_getValue('Rate',7)+"&fixsum="+GM_getValue('FixSum',0)+"&callback";
var sURL= urlAPP+paramsAPP;
  unsafeWindow.callGoogle(sURL);

в gas (развернутое как веб приложение)
return ContentService.createTextOutput(e.parameter.callback+'.call(window, "ok")').setMimeType(ContentService.MimeType.JAVASCRIPT);

Последний раз редактировалось glot, 07.03.2015 в 02:47.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слишком долгий ajax jsonp запрос 1lider AJAX и COMET 2 05.07.2014 20:45
jSONP отправка и получение (в зависимости от критерия) данных nvp2 jQuery 13 31.10.2012 15:39
Утечки памяти при использовании JSONP в IE 9 evgkar AJAX и COMET 3 28.12.2011 19:40
JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений? Kotakota jQuery 5 23.08.2011 23:12
Ajax разбор метода mycoding jQuery 14 21.05.2010 10:57