Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > парсинг страницы


Автор: derfach 1.12.2013, 20:03
есть пхп файл который выдает строку:

Код

var pos = url.indexOf("s555s 555");
if(false !== pos) {
                 document.write("Совпадение найдено");
}
else {
                document.write("Совпадение не найдено")
}



как мне узнать какая цифра стоит перед "s555s 555"??

Автор: ksnk 1.12.2013, 22:02
Код

var m,url='2 simon 2035 3 simon 2035 4 simon 2035 5 simon 2035 6 simon 2035 7 s555s 555 8 s555s 555 9 s555is 555';
if(m=url.match(/(\d+)\s+s555s 555/)) {
    console.log("Совпадение найдено "+m[1]);
}
else {
    console.log("Совпадение не найдено");
}

Автор: derfach 1.12.2013, 22:07
а могу я в s записать адрес пхп файла:
то есть: var s = "http://gte.df.com/и_так_дальше";

но если запустить этот адрес в браузере, то он выдаст вот эту строку что сейчас записана в переменную s


как сделать чтобы можно было использовать адрес пхп файла с интернета?

Автор: IBS 2.12.2013, 00:07
http://jquery-docs.ru/ajax/jquery-ajax/
http://jquery-docs.ru/ajax/jquery-get/

Автор: derfach 2.12.2013, 23:15
Цитата(IBS @ 2.12.2013,  00:07)
http://jquery-docs.ru/ajax/jquery-ajax/
http://jquery-docs.ru/ajax/jquery-get/

Код

<html lang="en">
    <head>
        <title>JQuery (cross-domain) JSONP Twitter example</title>
        <script type="text/javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
        <script>
        
             bodyContent = $.ajax({
             url: "",
             global: false,
                         type: "GET",
                         data: ({GameID : "5", from: "0", num: "50000"}),
                         dataType: "html",
                         success: function(msg){
                         alert(msg);
            }
            }    
            ).responseText;
        </script>
    </head>
    <body>
        
    </body>
</html>




не работает.. подскажите в чем загвоздка!?))

я так понимаю что должно выдать тот же результат что и при запуски этой ссылки в браузере..

Автор: ksnk 3.12.2013, 07:09
Цитата(derfach @  2.12.2013,  23:15 Найти цитируемый пост)
я так понимаю что должно выдать тот же результат что и при запуски этой ссылки в браузере..

Домен тот же, что и у страницы? Если не тот, то не должно. Это специальная фича ajax'a, чтобы стимулировать развитие изобретательности и изучение серверных языков программирования.

Автор: derfach 3.12.2013, 15:19

ну вот эта ссылка выводит результат в браузере...


а мне нужно записать тот же самый результат в переменную...

как это сделать?

Автор: ksnk 3.12.2013, 15:35
derfach, сделать запрос к чужому серверу fopen'ом на php, на сервере.  Если fopen по каким то причинам недоступен/не работает - curl'ом. полученную строку вставить в нужное место.

На javascript, используя клиентскую машину этого не сделать никак.

Если это нужно только для себя любимого и только на какой то конкретной машине, то можно поинтересоваться расширениями для Хрома. Вполне себе Javascript и идиотских XSS ограничений там нет. 

Автор: derfach 3.12.2013, 15:39
Цитата(ksnk @ 3.12.2013,  15:35)
derfach, сделать запрос к чужому серверу fopen'ом на php, на сервере.  Если fopen по каким то причинам недоступен/не работает - curl'ом. полученную строку вставить в нужное место.

На javascript, используя клиентскую машину этого не сделать никак.

Если это нужно только для себя любимого и только на какой то конкретной машине, то можно поинтересоваться расширениями для Хрома. Вполне себе Javascript и идиотских XSS ограничений там нет.

Код

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Load remote content into object element</title>
  </head>
  <body>
    <div id="siteloader"></div>​
    <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
    <script>
      $("#siteloader").html('<object data="http://tired.com/">');
    </script>
  </body>
</html>



ну вот текст выводится в div на странице..
разве нельзя никак записать не в div, а переменную??

Автор: derfach 3.12.2013, 16:17
ну или как-то так:

Код

<html>
<head>
<script type="text/javascript">
function readFile(url) {
    pageRequest = new XMLHttpRequest()
    pageRequest.open("GET", url, false);
    pageRequest.send(null);
    
    return pageRequest.responseXML;
}
</script>
</head>

<body>
<script type="text/javascript">
    var txt = readFile("");
    document.write(txt);
</script>
</body>

</html>


но оно почему-то не работает...

Автор: ksnk 3.12.2013, 16:23
Цитата(derfach @  3.12.2013,  15:39 Найти цитируемый пост)
разве нельзя никак записать не в div, а переменную?? 

Нельзя.
Вот представь. Ты заходишь куда то на сайт. Он (сайт) открывает в скрытом фрейме/object банковский url, вконткик, гуглмейл, тырит оттуда сессии-куки-явки-пароли и сливает себе на сервер. Все это молча, незаметно, без ведома пользователя. Стало страшно?

Авторы броузеров давно и небезуспешно затыкают такие дыры. И все уже заткнули. Так что на чужой домен ходить клиентом нельзя.

Автор: derfach 3.12.2013, 16:24
эта фигня оказывается работает только в IE))

спасибо!))

единственное подскажите как это заставить работать в Chrome и Firefox?




вот этот код работает так как я вам говорю, правда только в IE:

Код

<html>
<head>
<script type="text/javascript">
function readFile(url) {
    pageRequest = new XMLHttpRequest()
    pageRequest.open("GET", url, false);
    pageRequest.send(null);
    
    return pageRequest.responseText;
}
</script>
</head>

<body>
<script type="text/javascript">
    var txt = readFile("");
    document.write(txt);
</script>
</body>

</html>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)