Javascript HTML захватить из внешнего iframe + вызов действия контроллера с данными - PullRequest
1 голос
/ 08 апреля 2010

Предисловие: я считаю себя «слегка эффективным» в ruby ​​на рельсах и полным новичком в javascript. Кроме того, да, я установил jQuery и связанные плагины вместо библиотеки прототипов по умолчанию.
Я нахожусь в ситуации, когда я вытягиваю таблицу из внешнего сайта в iframe (который заботится обо всех внутренних JS для меня), так что когда щелкают по части таблицы, td получит класс "active «. То, что я хотел бы сделать, это взять эту информацию (я предполагаю, что я могу получить ее в строковом формате), и передать ее методу (в моем контроллере, я предполагаю), который будет анализировать HTML, вытащить соответствующую информацию, а затем вызовите метод создания в том же контроллере с проанализированной информацией, конечный результат - новый элемент в этой таблице.

То, что я имею до сих пор, - это javascript, который я считаю правильным:

<script type="text/javascript">
  var ImportInfo = function() {
  var info = $('td.active').html();
  // call controller action which parses the given string,
  //checks for existence in database, and adds new row if needed
}

$("#Import").click(ImportInfo);
</script>

и, конечно же, кнопка с id = "Import."

Я посмотрел на этот вопрос: Использование jQuery для вызова действия контроллера , но я не совсем уверен относительно того, как вызвать действие контроллера для передачи содержимого td в виде строки. Это выполнимо методом jQuery post?

ДОБАВЛЕННАЯ ИНФОРМАЦИЯ: мой iframe:

<iframe id='locator' src="http://hosted.where2getit.com/wafflehouse/indexnew.html" width="740" height="700" marginheight="0" marginwidth="0" scrolling="no" frameborder="0" align="bottom" name="plg_iframe">No Frames</iframe>

1 Ответ

1 голос
/ 08 апреля 2010

Жаль, что вы бросили Prototype - я мог бы помочь вам лучше ;-)

Эксперты jQuery не стесняются меня поправлять, но я верю, что вы хотите что-то вроде:

<script type="text/javascript">
  var ImportInfo = function() {
  var info = $('td.active').html();
  // call controller action which parses the given string,
  //checks for existence in database, and adds new row if needed
  $.ajax({
    url: '/controller/action',
    data: { paramName: info }
  })
}

$("#Import").click(ImportInfo);
</script>

Если вы хотите сделать это с Prototype, вы должны использовать:

<script type="text/javascript">
  var ImportInfo = function() {
  var info = $$('td.active')[0].innerHTML;
  // call controller action which parses the given string:
  new Ajax.Request('/controller/action',{
    method: 'post'
    parameters: { paramName: info }
  })
}

$("#Import").click(ImportInfo);
</script>

Теперь, перечитав ваш вопрос, я вижу, что <td>, с которого вы хотите получить данные, это в iFrame с другого сайта , это правильно? Если это так, JavaScript не будет иметь доступа к этому iFrame из-за ограничений безопасности. См. эту статью MSDN или Google для "Междоменной безопасности iframe". Если это ваша проблема, пожалуйста, предоставьте более подробную информацию о двух доменах, о которых идет речь ... вам может или не повезет.

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