Ajax звонок из Bookmarklet - PullRequest
       17

Ajax звонок из Bookmarklet

7 голосов
/ 20 марта 2009

Я пытаюсь создать букмарклет, который после нажатия запрашивал бы некоторую информацию у пользователя (в данном случае URL-адрес и пару других полей), а затем отправлял эти данные на страницу php на моем сервере, а затем отображал результат.

Я хотел бы сделать Ajax-вызов для этого, чтобы я на самом деле не перенаправлял на новую страницу, просто получал данные, но я предполагаю, что я столкнусь с ограничением "Same Origin Policy" Ajax .... Есть ли какой-нибудь известный способ в основном делать то же самое?

Кроме того, как лучше всего передать параметры? У меня уже есть механизм для получения параметров в виде сообщения из формы ... Есть ли способ, которым я мог бы просто повторно использовать это?

Ответы [ 2 ]

6 голосов
/ 22 марта 2009

Вы можете установить букмарклет, создав закладку и добавив этот фрагмент кода ниже в местоположение, но, в соответствии с тем же ограничением политики происхождения , это будет работать, только если текущая вкладка находится в том же месте здесь www.google.com .

Если я хорошо понимаю ваши потребности, это будет хорошо для вашей проблемы.

var request = new XMLHttpRequest();
request.open("GET", "http://www.google.com", true);
request.onreadystatechange = function() {
  var done = 4, ok = 200;
  if (request.readyState == done && request.status == ok) {
    if (request.responseText) {
      alert(request.responseText);
    }
  }
};
request.send(null);

Я не знаю, сработает ли POST.

1 голос
/ 20 марта 2009

Вы не сможете сделать сообщение, но GET будет работать нормально. Если вы используете что-то вроде jQuery, он просто создаст тег сценария с URL-адресом src, который будет отправлять данные, которые вы хотите отправить.

Вам нужно будет вернуть данные в стиле JSON.

См .: http://docs.jquery.com/Ajax/jQuery.getJSON

В качестве альтернативы, ваш букмарклет может создать на странице iframe, и это может помочь вам в отправке данных (тогда вы можете использовать post), если вы не хотите общаться между iframe и самой страницей, а вместо этого просто используйте ввод пользователя для отправки.

...