Регистрация  |  Вход

Tонкости работы с RemoteAction и ActionFunction

У меня есть @RemoteAction который на callback своей функции выполняет некоторый javascript и должен вызвать actionFunction,но actionfunction не вызывается почему ? что я упускаю ?

У меня есть @RemoteAction который на callback своей функции выполняет некоторый javascript и должен вызвать actionFunction,но actionfunction не вызывается почему ? что я упускаю ?

Sergey Prichepo
У меня есть @RemoteAction который на callback своей функции выполняет некоторый javascript и должен вызвать actionFunction,но actionfunction не вызывается почему ? что я упускаю ?

Ну тут несколько вариантов.

1. Когда приходит ответ от твоего @RemoteAction, твоя функция становится не определенной. Это решается выносом этой функции в статик ресурс.

2. По каким-то причинам не правильно срабатывает твой callback. Тут уже нужно смотреть твою логику.

[quote="Sergey Prichepo"]У меня есть @RemoteAction который на callback своей функции выполняет некоторый javascript и должен вызвать actionFunction,но actionfunction не вызывается почему ? что я упускаю ?[/quote]

Ну тут несколько вариантов.

1. Когда приходит ответ от твоего @RemoteAction, твоя функция становится не определенной. Это решается выносом этой функции в статик ресурс.

2. По каким-то причинам не правильно срабатывает твой callback. Тут уже нужно смотреть твою логику.

blank

blank

И никаких ошибок в консоли в браузере нет ? Попробуй вынести callback функцию в переменную и запусти ее отдельно. Все ли будет правильно отрабатывать ?

И никаких ошибок в консоли в браузере нет ? Попробуй вынести callback функцию в переменную и запусти ее отдельно. Все ли будет правильно отрабатывать ?

wilder
И никаких ошибок в консоли в браузере нет ? Попробуй вынести callback функцию в переменную и запусти ее отдельно. Все ли будет правильно отрабатывать ?

да все правильно работает,вот такая ошибка если запускать под дебагом js/ Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.

[quote="wilder"]И никаких ошибок в консоли в браузере нет ? Попробуй вынести callback функцию в переменную и запусти ее отдельно. Все ли будет правильно отрабатывать ?[/quote]
да все правильно работает,вот такая ошибка если запускать под дебагом js/ Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/. 

Sergey Prichepo
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.

У тебя проблема с передаваемыми параметрами, где-то есть кавычка. проверь данные.

[quote="Sergey Prichepo"]Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.[/quote]

У тебя проблема с передаваемыми параметрами, где-то есть кавычка. проверь данные.

ок спасибо чекну.:)

ок спасибо чекну.:)

Sergey Prichepo
У меня есть @RemoteAction который на callback своей функции выполняет некоторый javascript и должен вызвать actionFunction,но actionfunction не вызывается почему ? что я упускаю ?

Зачем после RemoteAction запускать actionFunction???
Это же одно и то же только разный принцип отправки запросам и обработки результата.
Зачем делать один запрос, а потом из него вызывать второй запрос? Почему нельзя сделать все в одном?

Sergey Prichepo
js/ Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.

Если я не ошибаюсь это не ошибка а всего лишь Warning. Он не влияет на правильность работы скрипта.

[quote="Sergey Prichepo"]У меня есть @RemoteAction который на callback своей функции выполняет некоторый javascript и должен вызвать actionFunction,но actionfunction не вызывается почему ? что я упускаю ?[/quote]
Зачем после RemoteAction запускать actionFunction???
Это же одно и то же только разный принцип отправки запросам и обработки результата.
Зачем делать один запрос, а потом из него вызывать второй запрос? Почему нельзя сделать все в одном?

[quote="Sergey Prichepo"] js/ Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.[/quote]
Если я не ошибаюсь это не ошибка а всего лишь Warning. Он не влияет на правильность работы скрипта.

Dmitry Shnyrev
Sergey Prichepo
У меня есть @RemoteAction который на callback своей функции выполняет некоторый javascript и должен вызвать actionFunction,но actionfunction не вызывается почему ? что я упускаю ?

Зачем после RemoteAction запускать actionFunction???
Это же одно и то же только разный принцип отправки запросам и обработки результата.
Зачем делать один запрос, а потом из него вызывать второй запрос? Почему нельзя сделать все в одном?

Sergey Prichepo
js/ Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.

Если я не ошибаюсь это не ошибка а всего лишь Warning. Он не влияет на правильность работы скрипта.

Там нужен сonfirm из js На ответ сервера а потом только save,на худой конец если не разберусь сделаю web service или сheckbox сделаю после.Да это предуприждение.

[quote="Dmitry Shnyrev"][quote="Sergey Prichepo"]У меня есть @RemoteAction который на callback своей функции выполняет некоторый javascript и должен вызвать actionFunction,но actionfunction не вызывается почему ? что я упускаю ?[/quote]
Зачем после RemoteAction запускать actionFunction???
Это же одно и то же только разный принцип отправки запросам и обработки результата.
Зачем делать один запрос, а потом из него вызывать второй запрос? Почему нельзя сделать все в одном?

[quote="Sergey Prichepo"] js/ Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.[/quote]
Если я не ошибаюсь это не ошибка а всего лишь Warning. Он не влияет на правильность работы скрипта.[/quote]

Там нужен сonfirm из js На ответ сервера а потом только save,на худой конец если не разберусь сделаю web service или сheckbox сделаю после.Да это предуприждение.

Но вообще по идее все должно работать - Вызов RemoteAction не изменяет структуру страницы и следовательно не может поломать actionFunction - пробуй запустить отдельно из консоли браузера и повесь побольше console.log() чтобы контролировать выполнение по шагам. Возможно просто код не совсем правильный.

Но вообще по идее все должно работать - Вызов RemoteAction не изменяет структуру страницы и следовательно не может поломать actionFunction - пробуй запустить отдельно из консоли браузера и повесь побольше console.log() чтобы контролировать выполнение по шагам. Возможно просто код не совсем правильный.

Почему бы просто не использовать 2 remote actions?
Скорее всего проблема в том, что сигнатура не верная/область видимости не та/срабатывает не то событие.
Нужно просто продебажить.

Почему бы просто не использовать 2 remote actions?
Скорее всего проблема в том, что сигнатура не верная/область видимости не та/срабатывает не то событие.
Нужно просто продебажить.

А вообще дам всем совет, вместо всяких разных webservice, remoteAction, restResource и т.д. сделайте простую станичку с типом text/json и контроллер к ней и получите очень простой и хороший, не затрагивающий лимиты инструмент для ajax запросов.

А вообще дам всем совет, вместо всяких разных webservice, remoteAction, restResource и т.д. сделайте простую станичку с типом text/json и контроллер к ней и получите очень простой и хороший, не затрагивающий лимиты инструмент для ajax запросов.

Dmitry Shnyrev
Если я не ошибаюсь это не ошибка а всего лишь Warning. Он не влияет на правильность работы скрипта.

Ошибаешься. Когда есть ошибка в скрипте, то когда ты делаешь асинхронный запрос из JS появляется именно эта ошибка. сам недавно сутки мудахался.

[quote="Dmitry Shnyrev"]Если я не ошибаюсь это не ошибка а всего лишь Warning. Он не влияет на правильность работы скрипта.[/quote]

Ошибаешься. Когда есть ошибка в скрипте, то когда ты делаешь асинхронный запрос из JS появляется именно эта ошибка. сам недавно сутки мудахался.

Sergey Prichepo
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.

Wilder, ты про эту ошибку?

Конкретно это не ошибка, а Warning. И нет никакого криминала в том что он появляется. Другое дело что за ним уже может последовать ошибка - как у меня на скриншоте.
НО сколько я работаю с RemoteAction - никогда никаких проблем при этом не возникало!!!
Как вариант может быть я не сталкивался с проблемами потому что не использовал RemoteAction совместно с обычным поведением Visualforce страниц. А зачем? Если уже использовать Remote Action то по полной.

Честно признаться я так толком и не понял в чем причина этих косяков - возможно просто недостаток самого Salesforce. Вот тут нашел про эту ошибку, но понимания так и не пришло - https://toster.ru/q/180809

[quote="Sergey Prichepo"]Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.[/quote]
Wilder, ты про эту ошибку?
[img]/pics/30/original_2015-03-08_15-14-44.png[/img]
Конкретно это не ошибка, а Warning. И нет никакого криминала в том что он появляется. Другое дело что за ним уже может последовать ошибка - как у меня на скриншоте.
НО сколько я работаю с RemoteAction - никогда никаких проблем при этом не возникало!!!
Как вариант может быть я не сталкивался с проблемами потому что не использовал RemoteAction совместно с обычным поведением Visualforce страниц. А зачем? Если уже использовать Remote Action то по полной.

Честно признаться я так толком и не понял в чем причина этих косяков - возможно просто недостаток самого Salesforce. Вот тут нашел про эту ошибку, но понимания так и не пришло - https://toster.ru/q/180809


НЕ ПРАВИЛЬНО

var resFunc = function(result) {
createRemoteSiteSettings({!API.Session_ID}, result);
}

var result = jsExecuteApex('orgsrc','login','{!SourceSync__OrgSrc__c.Id}',null, true);


ПРАВИЛЬНО

var resFunc = function(result) {
createRemoteSiteSettings("{!API.Session_ID}", result);
}

Вот из-за этого вылетает стандартный асинхронний салесфорс процесс и появляется тот самый варнинг.

[code]
[b]НЕ ПРАВИЛЬНО[/b]

var resFunc = function(result) {
 createRemoteSiteSettings([b]{!API.Session_ID}[/b], result);
}

var result = jsExecuteApex('orgsrc','login','{!SourceSync__OrgSrc__c.Id}',null, true);


[b]ПРАВИЛЬНО[/b]

var resFunc = function(result) {
 createRemoteSiteSettings([b]"{!API.Session_ID}"[/b], result);
}

[/code]

Вот из-за этого вылетает стандартный асинхронний салесфорс процесс и появляется тот самый варнинг.

wilder
Вот из-за этого вылетает стандартный асинхронний салесфорс процесс и появляется тот самый варнинг.

Не совсем понял твой пример:
ты показываешь что у тебя ошибка в строке
var result = jsExecuteApex('orgsrc','login','{!SourceSync__OrgSrc__c.Id}',null, true);
Так а что в результате происходит? JS перестает выполняться? Это опять же возвращаясь к тому вопросу что Warning не останавливает выполнение в отличии от Error, а у нас именно WARNING! Или данные не приходят или что еще?
Я сколько не пытался тоже понять что не так с кодом и результатами - все работало как часы! Никаких проблем не возникало - я поэтому уже давно и забил на это сообщение.

[quote="wilder"]Вот из-за этого вылетает стандартный асинхронний салесфорс процесс и появляется тот самый варнинг.[/quote]
Не совсем понял твой пример:
ты показываешь что у тебя ошибка в строке
var result = jsExecuteApex('orgsrc','login','{!SourceSync__OrgSrc__c.Id}',null, true);
Так а что в результате происходит? JS перестает выполняться? Это опять же возвращаясь к тому вопросу что Warning не останавливает выполнение в отличии от Error, а у нас именно WARNING! Или данные не приходят или что еще?
Я сколько не пытался тоже понять что не так с кодом и результатами - все работало как часы! Никаких проблем не возникало - я поэтому уже давно и забил на это сообщение.


сорри, не совсем правильно прочитал твое сообщение

Dmitry Shnyrev
вылетает стандартный асинхронний салесфорс процесс

получается ты просто не получаешь в result никакого ответа?

сорри, не совсем правильно прочитал твое сообщение
[quote="Dmitry Shnyrev"]вылетает стандартный асинхронний салесфорс процесс[/quote]
получается ты просто не получаешь в result никакого ответа?

Dmitry Shnyrev
сорри, не совсем правильно прочитал твое сообщение
Dmitry Shnyrev
вылетает стандартный асинхронний салесфорс процесс

получается ты просто не получаешь в result никакого ответа?

Так точно.

[quote="Dmitry Shnyrev"]сорри, не совсем правильно прочитал твое сообщение
[quote="Dmitry Shnyrev"]вылетает стандартный асинхронний салесфорс процесс[/quote]
получается ты просто не получаешь в result никакого ответа?[/quote]

Так точно.

Все пофиксил просто надо было добавить return false.В js function которая вызывается непосредственно с onclick который запускает мой Remote и actionFunction.Хотя не до конца понял почему заработало.

function alertDealer(){
checkDealerRetailPrice();
return false;
}

Gres
Почему бы просто не использовать 2 remote actions?
Скорее всего проблема в том, что сигнатура не верная/область видимости не та/срабатывает не то событие.
Нужно просто продебажить.

Именно так в начале я и хотел делать но потом подумал что писать сериализот для всех инпут филдов и полностью переписывать save metod будет затратно.

Все пофиксил просто надо было добавить return false.В js function которая вызывается непосредственно с onclick который запускает мой Remote и actionFunction.Хотя не до конца понял почему заработало.

function alertDealer(){    
checkDealerRetailPrice(); 
return false;                          
}

[quote="Gres"]Почему бы просто не использовать 2 remote actions?
Скорее всего проблема в том, что сигнатура не верная/область видимости не та/срабатывает не то событие.
Нужно просто продебажить.[/quote]
Именно так в начале я и хотел делать но потом подумал что писать сериализот для всех инпут филдов и полностью переписывать save metod будет затратно.
 

кажется понял форма перезагружается раньше чем мы успеваем получить ответ с actionfuncion.

кажется понял форма перезагружается раньше чем мы успеваем получить ответ с actionfuncion.

Sergey Prichepo
function alertDealer(){
checkDealerRetailPrice();
return false;
}

return false просто отменятет стандартное поведение события

[quote="Sergey Prichepo"]function alertDealer(){
checkDealerRetailPrice();
return false;
}[/quote]
return false просто отменятет стандартное поведение события

Gres
return false просто отменятет стандартное поведение события

Только это надо делать не в функции, а в обработчике события. Т.е.
onclick="alertDealer(); return false;"

или тогда
onclick="return alertDealer();"

[quote="Gres"]return false просто отменятет стандартное поведение события[/quote]
Только это надо делать не в функции, а в обработчике события. Т.е.
[code]onclick="alertDealer(); return false;"[/code]
или тогда
[code]onclick="return alertDealer();"[/code]

Dmitry Shnyrev
onclick="return alertDealer();"

Из кнопки такой вариант не работает.

[quote="Dmitry Shnyrev"]onclick="return alertDealer();"[/quote]

Из кнопки такой вариант не работает.

Dmitry Shnyrev
Только это надо делать не в функции, а в обработчике события.

Ну естественно.

[quote="Dmitry Shnyrev"]Только это надо делать не в функции, а в обработчике события. [/quote]
Ну естественно.

Gres
А вообще дам всем совет, вместо всяких разных webservice, remoteAction, restResource и т.д. сделайте простую страничку с типом text/json и контроллер к ней и получите очень простой и хороший, не затрагивающий лимиты инструмент для ajax запросов.

то есть все это асинхронное общение с сервером можно решить без "спец средств" как remoteAction, а просто с помощью обычных страниц и контролеров, и с клиента "стучать" по ним, например, теми AJAX средствами которые дает jQuery.

это можно использовать, например, под JS кнопкой на стандартном лейауте, когда хочется обойтись без использования SF AJAX tool.

но больше смысла использовать на активной странице, работающей на каком-то фронт-энд JS движке, и у которой, соответственно, много колбек вызовов и лимито-сбережение имеет смысл.

[quote="Gres"]А вообще дам всем совет, вместо всяких разных webservice, remoteAction, restResource и т.д. сделайте простую страничку с типом text/json и контроллер к ней и получите очень простой и хороший, не затрагивающий лимиты инструмент для ajax запросов.[/quote]

то есть [b]все это асинхронное общение[/b] с сервером можно решить без "спец средств" как remoteAction, а просто с помощью обычных страниц и контролеров, и с клиента "стучать" по ним, например, теми AJAX средствами  которые дает jQuery.

это можно использовать, например, под JS кнопкой на стандартном лейауте, когда хочется обойтись без использования SF AJAX tool.

но больше смысла использовать на активной странице, работающей на каком-то фронт-энд JS движке, и у которой, соответственно, много колбек вызовов и лимито-сбережение имеет смысл.

Den Brown
то есть все это асинхронное общение с сервером можно решить без "спец средств" как remoteAction, а просто с помощью обычных страниц и контролеров, и с клиента "стучать" по ним, например, теми AJAX средствами которые дает jQuery.

Естественно

[quote="Den Brown"]то есть все это асинхронное общение с сервером можно решить без "спец средств" как remoteAction, а просто с помощью обычных страниц и контролеров, и с клиента "стучать" по ним, например, теми AJAX средствами которые дает jQuery.[/quote]
Естественно

Gres
Естественно

нравится мне одна японская поговорка об этом:
"Просто сделать сложно, сложно сделать просто"

[quote="Gres"]Естественно[/quote]

нравится мне одна японская поговорка об этом:
[i]"Просто сделать сложно, сложно сделать просто"[/i]

Den Brown
нравится мне одна японская поговорка об этом:
"Просто сделать сложно, сложно сделать просто"

и там есть и другое выражение:

ты, наверное, очень простой, если думаешь, что простые вещи так просты

прямо, как про програмирование

[quote="Den Brown"]нравится мне одна японская поговорка об этом: 
"Просто сделать сложно, сложно сделать просто"[/quote]

и там есть и другое выражение:

[i]ты, наверное, очень простой, если думаешь, что простые вещи так просты[/i]

прямо, как про програмирование

Ты читал мою статью по этому поводу?

Ты читал мою статью по этому поводу?

Gres
Ты читал мою статью по этому поводу?

Эту?
http://habrahabr.ru/post/253641/

прочту на неделе более внимательно.

а так получается, что страничка с типом text/json и контроллером, как-то принимающая какие-то аргументы, - это и есть вариант REST servica с кастомным синтаксисом передачи аргументов в УРЛ. я давно читал, что REST сервис - это общая идея коммуникации клиента-контроллера, под которую каждый может создать свой стиль передачи команд, информации в урл строке ну и использовать HTTP методы. Интересно.

[quote="Gres"]Ты читал мою статью по этому поводу?[/quote]

Эту?
http://habrahabr.ru/post/253641/

прочту на неделе более внимательно.

а так получается, что страничка с типом text/json и контроллером, как-то принимающая какие-то аргументы, - это и есть вариант REST servica с кастомным синтаксисом передачи аргументов в УРЛ. я давно читал, что REST сервис - это общая идея коммуникации клиента-контроллера,  под которую каждый может создать свой стиль передачи команд, информации в урл строке ну и использовать HTTP методы. Интересно.

Den Brown
Gres
Ты читал мою статью по этому поводу?

Эту?
http://habrahabr.ru/post/253641/

прочту на неделе более внимательно.

а так получается, что страничка с типом text/json и контроллером, как-то принимающая какие-то аргументы, - это и есть вариант REST servica с кастомным синтаксисом передачи аргументов в УРЛ. я давно читал, что REST сервис - это общая идея коммуникации клиента-контроллера, под которую каждый может создать свой стиль передачи команд, информации в урл строке ну и использовать HTTP методы. Интересно.

Я пока все же использую именно вебсервис. Со стандартного лайаута достаточно удобно.

[quote="Den Brown"][quote="Gres"]Ты читал мою статью по этому поводу?[/quote]

Эту?
http://habrahabr.ru/post/253641/

прочту на неделе более внимательно.

а так получается, что страничка с типом text/json и контроллером, как-то принимающая какие-то аргументы, - это и есть вариант REST servica с кастомным синтаксисом передачи аргументов в УРЛ. я давно читал, что REST сервис - это общая идея коммуникации клиента-контроллера,  под которую каждый может создать свой стиль передачи команд, информации в урл строке ну и использовать HTTP методы. Интересно.[/quote]

Я пока все же использую именно вебсервис. Со стандартного лайаута достаточно удобно.

Dmitry Shnyrev
Зачем после RemoteAction запускать actionFunction???
Это же одно и то же только разный принцип отправки запросам и обработки результата.
Зачем делать один запрос, а потом из него вызывать второй запрос? Почему нельзя сделать все в одном?

Это как бы две разные вещи, и нет ничего крамольного использовать их вместе. Иногда упрощает жизнь.

[quote="Dmitry Shnyrev"]
Зачем после RemoteAction запускать actionFunction???
Это же одно и то же только разный принцип отправки запросам и обработки результата.
Зачем делать один запрос, а потом из него вызывать второй запрос? Почему нельзя сделать все в одном?
[/quote]
Это как бы две разные вещи, и нет ничего крамольного использовать их вместе. Иногда упрощает жизнь.

Можно использовать , но тогда я могу сказать только одно - с архитектурой данной страницы полная "жопа".

Можно использовать :) , но тогда я могу сказать только одно - с архитектурой данной страницы полная "жопа".

Ты разницу между RemoteAction и ActionFunction, надеюсь, понимаешь?

Ты разницу между RemoteAction и ActionFunction, надеюсь, понимаешь?

Знаешь, уже несколько лет их использую, надеюсь что да.

Знаешь, уже несколько лет их использую, надеюсь что да.

Тогда чем плохо продернуть RemoteAction и по ответу лениво перерисовать куски страницы средствами VF через ActionFunction особо не напрягая свой мозг?
Хотя, конечно все зависит от проекта.

Тогда чем плохо продернуть RemoteAction и по ответу лениво перерисовать куски страницы средствами VF через ActionFunction особо не напрягая свой мозг?
Хотя, конечно все зависит от проекта.

Согласен, все зависит от задачи. Но у меня сложилось впечатление что если используется Remote Action то это уже ближе к JS и страница уже превращается в одностраничное приложение. Я их обычно использую с AngularJS, RactiveJS, или plain js, но уже никакие apex теги не использую и за перерисовку отвечает сам javascript (забываю про Visualforce). Если все таки ActionFunction, то это уже ближе к Visualforce и обычно смысла от RemoteAction нет особо.
Опять же были такие ситуации, когда вроде страница начинались с VF, разрасталась, AJAX перерисовки тормозили, принималось решение внедрить RemoteActions чтобы потом перерисовывать "если что" и в итоге страница работала, но как она была сделана смотреть без слез нельзя было.
В общем поэтому у меня сложилось мнение, что или VF(apex: теги) или RemoteActions+Javascript. Если начинается объединение, то это уже костыли.

Согласен, все зависит от задачи. Но у меня сложилось впечатление что если используется Remote Action то это уже ближе к JS и страница уже превращается в одностраничное приложение. Я их обычно использую с AngularJS, RactiveJS, или plain js, но уже никакие apex теги не использую и за перерисовку отвечает сам javascript (забываю про Visualforce). Если все таки ActionFunction, то это уже ближе к Visualforce и обычно смысла от RemoteAction нет особо. 
Опять же были такие ситуации, когда вроде страница начинались с VF, разрасталась, AJAX перерисовки тормозили, принималось решение внедрить RemoteActions чтобы потом перерисовывать "если что" и в итоге страница работала, но как она была сделана смотреть без слез нельзя было. 
В общем поэтому у меня сложилось мнение, что или VF(apex: теги) или RemoteActions+Javascript. Если начинается объединение, то это уже костыли.

ogoblin
Ты разницу между RemoteAction и ActionFunction, надеюсь, понимаешь?

Расскажи ка нам: что под капотом у той и другой технологии?

[quote="ogoblin"]Ты разницу между RemoteAction и ActionFunction, надеюсь, понимаешь?[/quote]
Расскажи ка нам: что под капотом у той и другой технологии?

Gres
ogoblin
Ты разницу между RemoteAction и ActionFunction, надеюсь, понимаешь?

Расскажи ка нам: что под капотом у той и другой технологии?

Если совсем просто - RemoteAction отвязанная от контроллера штука. ActionFunction - использование action метода контроллера.

[quote="Gres"][quote="ogoblin"]Ты разницу между RemoteAction и ActionFunction, надеюсь, понимаешь?[/quote]
Расскажи ка нам: что под капотом у той и другой технологии?[/quote]
Если совсем просто - RemoteAction отвязанная от контроллера штука. ActionFunction - использование action метода контроллера.

ogoblin
Если совсем просто - RemoteAction отвязанная от контроллера штука. ActionFunction - использование action метода контроллера.

Крут)
На самом деле то и то может быть как в контроллере, так и отдельно.

[quote="ogoblin"]Если совсем просто - RemoteAction отвязанная от контроллера штука. ActionFunction - использование action метода контроллера.[/quote]
Крут)
На самом деле то и то может быть как в контроллере, так и отдельно.

Я ожидал от тебя более глубокого ответа.

Я ожидал от тебя более глубокого ответа.


Я так думаю тут не мальчики собрались. А отвязанная штука, имелось ввиду не в контексте контроллера выполняется. Как бы очевидная вещь. А в глубь копать можно очень долго и надо ли?
Хотя можно конечно и глубже. Но не думаю, что кому нибудь Америку открою.

:)
Я так думаю тут не мальчики собрались. А отвязанная штука, имелось ввиду не в контексте контроллера выполняется. Как бы очевидная вещь. А в глубь копать можно очень долго и надо ли? 
Хотя можно конечно и глубже. Но не думаю, что кому нибудь Америку открою.

Чуть более, чем коротко. Но, походу ничего нового.
RemoteAction
- Понятия не имеет, что происходит в контроллере страницы.
- Разработчик сам определяет формат запроса/ответа (трафик).
- Можно использовать с разных страниц (тип, контроллер и т.п.)

ActionFunction
- JS обертка над методом контроллера.
- Соответственно контекст контроллера.
- При попустительстве разработчика гоняет тонны трафика, ибо передает куски готового HTML для встраивания в DOM.
- для ленивых, но в некоторых случаях необходим.

Как-то так. В общем для каждого способа есть свое применение. Я как-то зачудил бесконечный скролл под SF1 с помощью JS and controller.next(). По крайней мере не парился с запоминанием позиций в выборках. Если платформа позволяет - почему бы и нет.

Чуть более, чем коротко. Но, походу ничего нового.
RemoteAction 
- Понятия не имеет, что происходит в контроллере страницы.
- Разработчик сам определяет формат запроса/ответа (трафик).
- Можно использовать с разных страниц (тип, контроллер и т.п.)

ActionFunction
- JS обертка над методом контроллера.
- Соответственно контекст контроллера.
- При попустительстве разработчика гоняет тонны трафика, ибо передает куски готового HTML для встраивания в DOM.
- для ленивых, но в некоторых случаях необходим.

Как-то так. В общем для каждого способа есть свое применение. Я как-то зачудил бесконечный скролл под SF1 с помощью JS and controller.next(). По крайней мере не парился с запоминанием позиций в выборках. Если платформа позволяет - почему бы и нет.

Кстати на счет remote action с разных страниц.
Не помню точно, но вроде у меня недавно была проблема - я не мог вызывать remote action если он не в контроллере данной страницы. Хотя я вроде до этого момента тоже был уверен что remote action можно куда угодно положить и дергать. (сейчас попробую найти или воспроизвести что у меня была за проблема).

Кстати на счет remote action с разных страниц.
Не помню точно, но вроде у меня недавно была проблема - я не мог вызывать remote action если он не в контроллере данной страницы. Хотя я вроде до этого момента тоже был уверен что remote action можно куда угодно положить и дергать. (сейчас попробую найти или воспроизвести что у меня была за проблема).

Dmitry Shnyrev
у меня недавно была проблема - я не мог вызывать remote action

меня тоже этот вопрос сразу заинтересовал, для того чтобы иметь возможность вызывать remote action, нужно ли обязательно, чтоб эта страница сидела на том контроллере в котором описан этот remote action?

[quote="Dmitry Shnyrev"] у меня недавно была проблема - я не мог вызывать remote action[/quote]

меня тоже этот вопрос сразу заинтересовал, для того чтобы иметь возможность вызывать remote action, нужно ли обязательно, чтоб эта страница сидела на том контроллере в котором описан этот remote action?

Вот товарищи, проверил то что обещал.
Как дела с доступом к RemoteAction вне контроллера страницы?
Никак, по крайней мере у меня, не знаю как у вас

На страницу testContactsPage попробовал добавить вызов remote action из контроллера test111Controller

Result: [COMPILE FAILED]: (testContactsPage) No remoted actions found to resolve '$RemoteAction.test111Controller.testRemoteA' (Line: 1, Column: -1)

Даже global не помогает. Вроде extends для контроллера класса содержащего remote actions позволяет решить эту проблему. Не пробовал (не любитель я ООП, ну вы же помните )

Вот товарищи, проверил то что обещал.
Как дела с доступом к RemoteAction вне контроллера страницы?
Никак, по крайней мере у меня, не знаю как у вас :) 

На страницу testContactsPage попробовал добавить вызов remote action из контроллера test111Controller

[b]Result: [COMPILE FAILED]: (testContactsPage) No remoted actions found to resolve '$RemoteAction.test111Controller.testRemoteA'  (Line: 1, Column: -1)[/b]

Даже global не помогает. Вроде extends для контроллера класса содержащего remote actions позволяет решить эту проблему. Не пробовал (не любитель я ООП, ну вы же помните :D )

Dmitry Shnyrev
Вроде extends для контроллера класса содержащего remote actions

не знаю как там с remote actions, но интересная идея: унаследовать текущий контроллер от какого то базового и использовать в нем методы супер контроллера. но с сервис-классами, вызываемыми в контроллре, выглядит проще

[quote="Dmitry Shnyrev"]Вроде extends для контроллера класса содержащего remote actions[/quote]

не знаю как там с remote actions, но интересная идея: унаследовать текущий контроллер от какого то базового и использовать в нем методы супер контроллера. но с сервис-классами, вызываемыми в контроллре, выглядит проще

Дядьки простите засранца. Да, Remote action нельзя использовать из другого контроллера - я походу не так выразился.
extends спасает любителей ооп в данном случае.

Дядьки простите засранца. Да, Remote action нельзя использовать из другого контроллера - я походу не так выразился.
extends спасает любителей ооп в данном случае.

Ну еще в копилку ajax фишек - супер метод товарища Gres по использованию страницы которая возвращает json и которую надо дергать с помощью ajax POST запросов. Мега интересная идея. Жду случая применить на практике

Ну еще в копилку ajax фишек - супер метод товарища Gres по использованию страницы которая возвращает json и которую надо дергать с помощью ajax POST запросов. Мега интересная идея. Жду случая применить на практике :D 

Den Brown
Эту?
http://habrahabr.ru/post/253641/

прочту на неделе более внимательно.

мне одному кажется что в строке:

var result = $.post('{!Page.RestApi}', {command : 'test'});

пропущен знак $ перед Page?

и если мне не показалось, то подскажите, чё $.post(...) возвращает мне:

{"readyState":1}

PS: ага, нужно просто немного подождать, и вернут Стейт 4 со страницей.
НО, страница так и не отгружается, а отгружается страница с ошибкой

"Visualforce Error

The name can only contain underscores and alphanumeric characters."

идем дальше...

ах, ну да, нужно отрубить Дев мод.

да, работает...

[quote="Den Brown"]Эту? 
http://habrahabr.ru/post/253641/

прочту на неделе более внимательно.[/quote]

мне одному кажется что в строке:
[code]var result = $.post('{!Page.RestApi}', {command : 'test'});[/code]

пропущен знак $ перед Page?

и если мне не показалось, то подскажите, чё $.post(...) возвращает мне:
[code]{"readyState":1}[/code]

PS: ага, нужно просто немного подождать, и вернут Стейт 4 со страницей. 
НО, страница так и не отгружается, а отгружается страница с ошибкой

"Visualforce Error

The name can only contain underscores and alphanumeric characters."

идем дальше...

ах, ну да, нужно отрубить Дев мод.

да, работает...