jQuery Получить запрос по URL-адресу HTTP

Недавно я пытался получить ответ от URL-адреса с помощью jQuery. Поэтому я скопировал пример запроса на получение из учебника по запросу на получение jQuery API в свой проект и попытался запустить это, но мои отладочные сообщения показали мне, что это не может идти дальше. Я попробовал библиотеку javascript Ajax, используя простой запрос, но это не сработало.

Поэтому я прошу вас, не могли бы вы мне как-то помочь.

И это все, что я делаю, но ответа нет.

var url = "http://www.google.com";

$.get(url, function(data){


    alert("Data Loaded: " + data);
    });

Возможно, я забыл включить библиотеку ajax или jQuery. Для лучшего понимания, у меня есть опыт работы с c и obj-c, поэтому я думаю, что библиотека отсутствует.

В каждом примере есть только короткий URL-адрес, например «test.php». Мой полный URL-адрес HTTP неверен?

Спасибо за ваши ответы заранее.

Бр Ник


person NicTesla    schedule 09.05.2011    source источник


Ответы (4)


Я предоставил пример сценария, чтобы помочь вам начать:

<!-- Include this jQuery library in your HTML somewhere: -->
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script

Это, вероятно, лучше всего включить во внешний файл JS:

//Listen when a button, with a class of "myButton", is clicked
//You can use any jQuery/JavaScript event that you'd like to trigger the call
$('.myButton').click(function() {
//Send the AJAX call to the server
  $.ajax({
  //The URL to process the request
    'url' : 'page.php',
  //The type of request, also known as the "method" in HTML forms
  //Can be 'GET' or 'POST'
    'type' : 'GET',
  //Any post-data/get-data parameters
  //This is optional
    'data' : {
      'paramater1' : 'value',
      'parameter2' : 'another value'
    },
  //The response from the server
    'success' : function(data) {
    //You can use any jQuery/JavaScript here!!!
      if (data == "success") {
        alert('request sent!');
      }
    }
  });
});
person Oliver Spryn    schedule 09.05.2011
comment
Большое спасибо spryno724, я попробую это позже, когда я не работаю. Спасибо - person NicTesla; 10.05.2011
comment
Спасибо большое!! После проверки нескольких возможностей я выбрал ту, о которой вы упомянули. Для всех остальных, кто хотел бы иметь больше решений, используйте прокси (как другие показали здесь с PHP или YQL, который является прокси Yahoo, или, если вы используете tomcat, вы можете написать прокси самостоятельно), или используйте теги сценария, как решение, которое я выбрал. Мне это было нужно для моей дипломной работы, и спасибо всем вам!!! BR - person NicTesla; 16.05.2011
comment
Не проблема, рад, что смог помочь! - person Oliver Spryn; 17.05.2011

Вы нарушили Политику единого происхождения в отношении запросов ajax.

В двух словах, JS/Ajax по умолчанию может запускать запросы только в том же домене, откуда обслуживается HTML-страница. Если вы собираетесь отправлять запросы на другие домены, он должен поддерживать JSONP и/или установить Access-Control заголовки, чтобы заставить его работать. Если это не вариант, то вам нужно создать какой-нибудь прокси на стороне сервера и использовать вместо него (будьте осторожны, так как вас могут забанить за слишком много пиявок с других сайтов с помощью робота).

person BalusC    schedule 09.05.2011
comment
есть ли возможность отправить запрос на URL-адрес, который находится вне моего домена - person NicTesla; 10.05.2011
comment
Да, создайте прокси самостоятельно, используя серверный язык. По сути, пусть ваш сервер запросит URL-адрес и вернет ответ. Затем вы можете использовать ajax для подключения к вашему серверу. Например, в PHP вы можете использовать для этого curl(). Пусть он принимает URL-адрес в качестве параметра запроса и выводит результат curl() в ответ. Однако будьте осторожны с этим! В зависимости от политики другие сайты имеют право запрещать IP-адресу вашего сервера подключаться к ним по странным шаблонам. Лучше было бы посмотреть, нет ли у хоста общедоступного API ajax. У Google есть несколько общедоступных API ajax. - person BalusC; 10.05.2011
comment
Просто измените URL на свой сервер. Например. $.get('leech.php?url=' + encodeURIComponent('http://www.google.com')). Но все же лучше использовать общедоступный ajax API, предоставляемый Google (или любой другой хост, к которому вы собираетесь подключиться). Например. http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=your+search+term - person BalusC; 10.05.2011
comment
я пробовал это: вызов var = новый XMLHttpRequest(); var url = 'bar.other/resources/public-data'; if(вызов) { вызов.open('GET', url, true); invocation.onreadystatechange = обработчик; вызов.отправить(); } и теперь я получаю ответ. Большое спасибо - person NicTesla; 10.05.2011

Как уже говорили другие, вы не можете получить доступ к файлам на другом сервере. Есть хак. Если вы используете язык на стороне сервера (как я предполагаю), вы можете просто сделать что-то вроде:

http://myserver.com/google.php:

<?php
  echo get_file_contents('http://www.google.com');
?>

http://myserver.com/myscript.js

$.get('google.php',function(data){ console.log(data) });

Это должно сработать!

person user400908    schedule 09.05.2011

вы просто можете получить доступ к страницам с вашего домена/сервера

person ave4496    schedule 09.05.2011
comment
так что невозможно отправить запрос по URL-адресу http? - person NicTesla; 10.05.2011
comment
только если URL-адрес находится на том же сервере, что и скрипт. вы можете запросить php-страницу с вашего сервера, которая читает нужный вам URL. - person ave4496; 10.05.2011
comment
как бы вы выполнили HTTP-запрос, например, Google, используя javascript? - person NicTesla; 10.05.2011
comment
измените свой var url = на php-файл, хранящийся на вашем сервере. затем прочитайте нужную страницу с помощью curl или чего-то подобного - person ave4496; 10.05.2011