сценарии Google доктора формируют подчинение

Я пытаюсь создать bookmarklet, который разбирает страницу и посылает результаты в googledocs электронную таблицу через форму, которую я определил.

Соответствующая часть сценария:

var form = document.createElement("form");

form.action = "http://spreadsheets.google.com/formResponse?formkey=Fd0SHgwQ3YwSFd5UHZpM1QxMlNOdlE6MA&ifq";
form.method = "POST";
form.id="ss-form";
form.innerHTML = ["", "", "", ].join("");
form.submit();


alert(form.innerHTML);

//прибыль:

Ничто не экономится к форме через bookmarklet - какой-либо способ захватить ответ Google в кодексе моего bookmarklet? (fwiw, я ввел jQuery через jQueryify),

Править:

Чистая группа поджигателя не слышит ни одной деятельности, вызванной bookmarklet - Как насчет я приближаюсь к этому из метода viewform goolgle вместо formresponse.

Форма, которую я пытаюсь представить, расположена в:

http://spreadsheets.google.com/viewform?hl=en&formkey=dFd0SHgwQ3YwSFd5UHZpM1QxMlNOdlE6MA

Как я могу пойти о впрыскивании значений сценария в ту форму и затем утверждая, что - снова... с помощью сценария в bookmarklet, который был бы вызван в то время как на разбираемой странице?

10
задан justSteve 24 January 2010 в 20:45
поделиться

3 ответа

если вы уже используете jquery, попробуйте отправить форму через ajax ($.ajax). Вы можете настроить функцию успеха, которая будет вызвана, когда Google отправит ответ обратно.

Кроме того, вы должны быть в состоянии использовать подсказку, чтобы просмотреть ответ Google отправляет обратно.

В частности, я подумал, что вы могли бы попробовать что-то вроде:

$.ajax({
  url: "http://spreadsheets.google.com/formResponse",
  data: { formkey: "Fd0SHgwQ3YwSFd5UHZpM1QxMlNOdlE6MA&ifq", "entry.0.single": orderDate, "entry.2.single": email, "entry.3.single": customerID },
  type: "POST",
  dataType: "xml",
  success: function(data, textStatus, XMLHttpRequest) {
    console.log("success");
    console.log(data);
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
    console.log("error");
    console.log(textStatus);
  },
})
7
ответ дан 3 December 2019 в 20:41
поделиться

Я думал, что могу добавить к этому несколько лакомых кусочков, но оказалось, что они НЕ решают проблему.

  • определенно используйте входное 'name' (не id)
  • один из других параметров - 'ifq', не уверен, как это работает, чтобы связать это с 'formkey' (строка - это просто строка, верно?)
  • чтобы полностью имитировать форму Google, добавьте эти дополнительные поля: pageNumber = 0; backupCache = ''; submit = Submit

Я получаю ту же ошибку «Метод 405 запрещен»…

0
ответ дан 3 December 2019 в 20:41
поделиться

У меня нет полного ответа, но я смог заставить его работать с помощью Curl:

curl http://spreadsheets.google.com/formResponse?formkey=dFpVLTVFY2t5dWdoNTZpNERwWDRxX2c6MQ&ifq --data entry.0.single=eric --data entry.1.single=pugh

Также я смог заставить его работать через Ajax, используя прототип, но ТОЛЬКО в Safari.

В Firefox я тоже получаю тот же 405 Method not allowed. Вот мой скрипт:

function vote_for_synonym(word1, word2){
word1 = encodeURIComponent(word1);
word2 = encodeURIComponent(word2);

$req = new Ajax.Request("http://spreadsheets.google.com/formResponse?formkey=dFpVLTVFY2t5dWdoNTZpNERwWDRxX2c6MQ", {
  method: 'post',
  contentType: 'application/x-www-form-urlencoded',
  onCreate: function(){
   Element.show('systemWorking');
  },
  onSuccess: function() {
    Element.show('thanks');
    Element.hide('systemWorking')
  },
  onFailure: function() {
    Element.show('error');
  }
});           

}

Также у меня никогда не вызывается onFailure, только onSuccess.

1
ответ дан 3 December 2019 в 20:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: