У меня есть @RemoteAction который на callback своей функции выполняет некоторый javascript и должен вызвать actionFunction,но actionfunction не вызывается почему ? что я упускаю ?
И никаких ошибок в консоли в браузере нет ? Попробуй вынести 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/.
Зачем после RemoteAction запускать actionFunction??? Это же одно и то же только разный принцип отправки запросам и обработки результата. Зачем делать один запрос, а потом из него вызывать второй запрос? Почему нельзя сделать все в одном? Если я не ошибаюсь это не ошибка а всего лишь Warning. Он не влияет на правильность работы скрипта.
Там нужен сonfirm из js На ответ сервера а потом только save,на худой конец если не разберусь сделаю web service или сheckbox сделаю после.Да это предуприждение.
Но вообще по идее все должно работать - Вызов RemoteAction не изменяет структуру страницы и следовательно не может поломать actionFunction - пробуй запустить отдельно из консоли браузера и повесь побольше console.log() чтобы контролировать выполнение по шагам. Возможно просто код не совсем правильный.
Почему бы просто не использовать 2 remote actions? Скорее всего проблема в том, что сигнатура не верная/область видимости не та/срабатывает не то событие. Нужно просто продебажить.
А вообще дам всем совет, вместо всяких разных webservice, remoteAction, restResource и т.д. сделайте простую станичку с типом text/json и контроллер к ней и получите очень простой и хороший, не затрагивающий лимиты инструмент для ajax запросов.
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
Вот из-за этого вылетает стандартный асинхронний салесфорс процесс и появляется тот самый варнинг.
Не совсем понял твой пример: ты показываешь что у тебя ошибка в строке var result = jsExecuteApex('orgsrc','login','{!SourceSync__OrgSrc__c.Id}',null, true); Так а что в результате происходит? JS перестает выполняться? Это опять же возвращаясь к тому вопросу что Warning не останавливает выполнение в отличии от Error, а у нас именно WARNING! Или данные не приходят или что еще? Я сколько не пытался тоже понять что не так с кодом и результатами - все работало как часы! Никаких проблем не возникало - я поэтому уже давно и забил на это сообщение.
Все пофиксил просто надо было добавить return false.В js function которая вызывается непосредственно с onclick который запускает мой Remote и actionFunction.Хотя не до конца понял почему заработало.
function alertDealer(){ checkDealerRetailPrice(); return false; }
Почему бы просто не использовать 2 remote actions? Скорее всего проблема в том, что сигнатура не верная/область видимости не та/срабатывает не то событие. Нужно просто продебажить.
Именно так в начале я и хотел делать но потом подумал что писать сериализот для всех инпут филдов и полностью переписывать save metod будет затратно.
А вообще дам всем совет, вместо всяких разных webservice, remoteAction, restResource и т.д. сделайте простую страничку с типом text/json и контроллер к ней и получите очень простой и хороший, не затрагивающий лимиты инструмент для ajax запросов.
то есть все это асинхронное общение с сервером можно решить без "спец средств" как remoteAction, а просто с помощью обычных страниц и контролеров, и с клиента "стучать" по ним, например, теми AJAX средствами которые дает jQuery.
это можно использовать, например, под JS кнопкой на стандартном лейауте, когда хочется обойтись без использования SF AJAX tool.
но больше смысла использовать на активной странице, работающей на каком-то фронт-энд JS движке, и у которой, соответственно, много колбек вызовов и лимито-сбережение имеет смысл.
то есть все это асинхронное общение с сервером можно решить без "спец средств" как remoteAction, а просто с помощью обычных страниц и контролеров, и с клиента "стучать" по ним, например, теми AJAX средствами которые дает jQuery.
а так получается, что страничка с типом text/json и контроллером, как-то принимающая какие-то аргументы, - это и есть вариант REST servica с кастомным синтаксисом передачи аргументов в УРЛ. я давно читал, что REST сервис - это общая идея коммуникации клиента-контроллера, под которую каждый может создать свой стиль передачи команд, информации в урл строке ну и использовать HTTP методы. Интересно.
а так получается, что страничка с типом text/json и контроллером, как-то принимающая какие-то аргументы, - это и есть вариант REST servica с кастомным синтаксисом передачи аргументов в УРЛ. я давно читал, что REST сервис - это общая идея коммуникации клиента-контроллера, под которую каждый может создать свой стиль передачи команд, информации в урл строке ну и использовать HTTP методы. Интересно.
Я пока все же использую именно вебсервис. Со стандартного лайаута достаточно удобно.
Зачем после RemoteAction запускать actionFunction??? Это же одно и то же только разный принцип отправки запросам и обработки результата. Зачем делать один запрос, а потом из него вызывать второй запрос? Почему нельзя сделать все в одном?
Это как бы две разные вещи, и нет ничего крамольного использовать их вместе. Иногда упрощает жизнь.
Тогда чем плохо продернуть RemoteAction и по ответу лениво перерисовать куски страницы средствами VF через ActionFunction особо не напрягая свой мозг? Хотя, конечно все зависит от проекта.
Согласен, все зависит от задачи. Но у меня сложилось впечатление что если используется Remote Action то это уже ближе к JS и страница уже превращается в одностраничное приложение. Я их обычно использую с AngularJS, RactiveJS, или plain js, но уже никакие apex теги не использую и за перерисовку отвечает сам javascript (забываю про Visualforce). Если все таки ActionFunction, то это уже ближе к Visualforce и обычно смысла от RemoteAction нет особо. Опять же были такие ситуации, когда вроде страница начинались с VF, разрасталась, AJAX перерисовки тормозили, принималось решение внедрить RemoteActions чтобы потом перерисовывать "если что" и в итоге страница работала, но как она была сделана смотреть без слез нельзя было. В общем поэтому у меня сложилось мнение, что или VF(apex: теги) или RemoteActions+Javascript. Если начинается объединение, то это уже костыли.
Я так думаю тут не мальчики собрались. А отвязанная штука, имелось ввиду не в контексте контроллера выполняется. Как бы очевидная вещь. А в глубь копать можно очень долго и надо ли? Хотя можно конечно и глубже. Но не думаю, что кому нибудь Америку открою.
Чуть более, чем коротко. Но, походу ничего нового. RemoteAction - Понятия не имеет, что происходит в контроллере страницы. - Разработчик сам определяет формат запроса/ответа (трафик). - Можно использовать с разных страниц (тип, контроллер и т.п.)
ActionFunction - JS обертка над методом контроллера. - Соответственно контекст контроллера. - При попустительстве разработчика гоняет тонны трафика, ибо передает куски готового HTML для встраивания в DOM. - для ленивых, но в некоторых случаях необходим.
Как-то так. В общем для каждого способа есть свое применение. Я как-то зачудил бесконечный скролл под SF1 с помощью JS and controller.next(). По крайней мере не парился с запоминанием позиций в выборках. Если платформа позволяет - почему бы и нет.
Кстати на счет remote action с разных страниц. Не помню точно, но вроде у меня недавно была проблема - я не мог вызывать remote action если он не в контроллере данной страницы. Хотя я вроде до этого момента тоже был уверен что remote action можно куда угодно положить и дергать. (сейчас попробую найти или воспроизвести что у меня была за проблема).
у меня недавно была проблема - я не мог вызывать remote action
меня тоже этот вопрос сразу заинтересовал, для того чтобы иметь возможность вызывать 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 позволяет решить эту проблему. Не пробовал (не любитель я ООП, ну вы же помните )
Вроде extends для контроллера класса содержащего remote actions
не знаю как там с remote actions, но интересная идея: унаследовать текущий контроллер от какого то базового и использовать в нем методы супер контроллера. но с сервис-классами, вызываемыми в контроллре, выглядит проще
Дядьки простите засранца. Да, Remote action нельзя использовать из другого контроллера - я походу не так выразился. extends спасает любителей ооп в данном случае.
Ну еще в копилку ajax фишек - супер метод товарища Gres по использованию страницы которая возвращает json и которую надо дергать с помощью ajax POST запросов. Мега интересная идея. Жду случая применить на практике